Autor Zpráva
Kalby
Profil
Zdravím,

řeším teď problém při použití cronu, ten se spousti kazdy den o pulnoci. Vykonava nejakou operaci ktera je dost casove narocna, pote musi vykonat jeste dalsi stejne casove narocnou operaci (konkretne hromadne rozesilani emailu pres smtp server). Puvodne jsem myslel ze pouze po dokonceni prvni oprace dam heaer('Location') a presmeruji na druhy skript, jenze co jsem se docetl ze v CLI modu nefunguje.

Koukal jsem treba na curl, ale pokud jsem to dobre pochopil stejnak tu operaci porad provadi prvni skript, takze po case stejne hodi timeout.

Je nejaky zpusob jak nastavit presmerovani v cron jobs? Nebo jak se toto resi?

set_time_limit uz mam na pomerne velkou hodnotu a nevim co na to server kdybych tuto hodnotu jeste zdvojnasobil.
king26
Profil
Toto provádím příkazem exec()

Například:
exec("/usr/bin/php /data/ftp/intranet/scripts/cron/cron4_item.php $i >/dev/null 2>/dev/null &");

kde $i je proměnná, kterou scriptu posílám [získává se poté jako $argv[1] ] (použito na stránkování databáze). Místo /dev/null můžeš hodit soubor logující chyby.

Můžeš tak teda posílání emailů rozdělit třeba na 10 částí:
for ($i=1;$i<=$pocet_cyklu;$i++) {
          exec("/usr/bin/php /data/ftp/intranet/scripts/cron/cron4_item.php $i >/dev/null 2>/dev/null &");
          sleep(1);
}

V souboru, který tímto spustíš, si už jen spočítáš hodnoty $limit a $offset do MySQL dotazu.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0