ugrás a tartalomhoz

Cron feladat időkorlát beállítása?

forumferenc · 2013. Május. 28. (K), 13.21
Sziasztok!

Hogyan kell beállítani végtelen időkorlátot egy php cron feladathoz?

Eddig ezt adtam meg:

/usr/bin/wget http://domain.hu/olvasofajl.php

de nem fut végig mert egy fájlt olvas be és a fájl nagy kb a negyedéig olvas aztán leáll.

Köszi.
 
1

Időkorlát

Poetro · 2013. Május. 28. (K), 13.34
Az időkorlátot nem a cron-nak kell adni, hanem magának a PHP szkriptnek. Ezt a set_time_limit függvénnyel teheted meg, illetve a neki megfelelő max_execution_time konfigurációs változó beállításával pl. a php.ini fájlban vagy mondjuk .htaccess-ben.

Ezen kívül a wget is timeout-olni fog, ezt pedig a --timeout=0 illetve a specifikusabb --read-timeout=0 kapcsoló beállításával lehet megszüntetni (az alapértelmezett érték az utóbbira 900 másodperc).
2

Beállítottam de...

forumferenc · 2013. Május. 28. (K), 14.47
Beállítottam a .htaccess-be:
<IfModule mod_php5.c>
php_value post_max_size 5M
php_value upload_max_filesize 5M
php_value memory_limit 300M
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.gc_maxlifetime 1200
</IfModule>

Semmi más nincs benne.

A cron parancs így néz ki:
/usr/bin/wget --read-timeout=0 http://domain.hu/olvasofajl.php

az olvasofajl.php pedig így kezdődik:
ini_set('max_execution_time', '900');
set_time_limit(900);

De nem megy....
Elkezd le futni de aztán abbahagyja.
3

ini_set('max_execution_time',

Poetro · 2013. Május. 28. (K), 14.48
ini_set('max_execution_time', '900');
set_time_limit(900);
Namost pont a fentivel állítottad vissza 900 másodpercre a maximális futásidőt.
4

Átállítottam...

forumferenc · 2013. Május. 28. (K), 14.55

set_time_limit(259200);
ini_set('max_execution_time', '259200');   
Átállítottam de így se semmi.
De 'kézi' futtatással maximum 2perc alatt lefut.
6

Nézd vissza

Pepita · 2013. Május. 29. (Sze), 20.23
ini_get(...)-el nézd vissza az értékeket! Memóriát is, illetve ami a szkript futásakor még érdekes lehet. Továbbá érdemes a fájlnyitás (beolvasás) előtt és után a felhasznált memóriát is nézni.
A tárhelyed / vps-ed összes memóriája mennyi? Nehogy az legyen a gond, hogy az összes (többi) kérés elhasználta a RAM-ot, ide meg nem jutott már elég.

Csak kérdés: cron-nal miért nem közvetlenül a fájlt hívod, miért URL-t? (Így nem csak cron indíthatja, lehet, hogy ebből is futott több példány.)
5

set_time_limit

razielanarki · 2013. Május. 28. (K), 17.59
én ezt használnám, mégpedig emiatt (php manual)

When called, set_time_limit() restarts the timeout counter from zero.


azaz híváskor nullázza a számlálót, és onnantól kezdve még x másodpercet fog futni.
(ez hasznos lehet batch ciklusos elszállós feldolgozásokkor pl)