[PHP] čas na zpracování kódu

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod McEver4 1. 2. 2011 10:49

Zdravím, mám tu další problém k vyřešení.

mám PHP kod, který má za úkol zpracovávat informace a obrázky z jiného serveru.
zhruba popis: načte firmu z interní DB, kde je link na XML, pak stahne XML, přečte data a začne zpracovávat fotografie a další věci.

Kod testuji tak, že ho spustím přes prohlížeč. Kód by samozřejmě mohl pracovat celý den, ale nakonec se vše ukončí neboť není odezva.
Nastavil jsem tedy
Kód: Vybrat vše
set_time_limit(3000);

což je o ničem protože se to stejně ukončuje jak chce.

PHP stránku spouštím cronem a tam je to horsi, protože se mi script ukoncuje take jak chce.

nastavil jsem tedy že až udělá jednu firmu, tak má přestat, a po dalším spuštění má pokračovat u další firmy. Pak cronem spouštím stránku po 5ti minutách, což má za následek že udělá jednu firmu po 5ti minutách a celé zpracování pak trvá skoro celý den.

napadá vás nějaké řešení, kdy by PHP kód mohl běžet celý den ?
McEver4
Junior
Uživatelský avatar

Odeslat příspěvekod Vebloud 1. 2. 2011 10:53

například nastavit si max execution time ve scriptu na hoooooodně dlouho. Cronem si spouštět script, který bude kontrolovat, jestli script běží a pokud ne, tak ho nahodí znova.

Nicméně na stále běžící úkoly není PHPko zrovna vhodný nástroj.
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod karlos00x 1. 2. 2011 11:20

dat si time limit 4 minuty. spusti se, za 4 minuty se ukonci, a za dalsi minutu uz si ho znova zavola cron.

nicmene mi to ***** spatnym navrhem neceho (ceho konkretne nedokazu rict z neznalosti sirsich souvislosti). napr v phpmyadminu je pro import zaskrtavatko neco jako: ukoncit pokud se blizi time_limit a zapamatovat si kolikaty radek byl poslednim.

predpokladam ze to mas v nejakym cyklu, takze na konci kazde iterace bych nekam zapsal posledni vykonany zaznam, zkontroloval jestli se neblizi max time limit a bud pokracoval nebo ukoncil skript a ten by byl za chvili znova volan cronem.

// proc je slovo s.m.r.d.i cenzurovano? :oboze
Upgrade který má smysl: SSD. Zažijete svižný počítač.
karlos00x
Pokročilý

Odeslat příspěvekod K8 1. 2. 2011 12:52

nejlepsi je dat si limit na zpracovani jedne firmy - napr. 60 s a to set_time_limit si zavolat v cyklu vzdy na zacatku zpracovani firmy (pokud tedy to set_time_limit je povolene a funguje), takze pokud to kazdou firmu stihne v limitu, je vse OK a skript muze bezet treba nekolik dni, pokud se to nahodou u nejake firmy zadrhne, tak to po te minute skonci
K8
Pokročilý

Odeslat příspěvekod _ghost 1. 2. 2011 13:19

K tomu ucelu je nanejvys vhodne php-cli ! Zadny timetout, muze bezet porad.
Ovsem je-li mozne jej pouzit ...
_ghost
Junior

Odeslat příspěvekod McEver4 1. 2. 2011 14:35

někdy se stane že se to ukončí v polovině úpravy obrázků a pak jsou poškozené, jdu vyzkoušet php-cli... zní to slibně :-D
McEver4
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků