ugrás a tartalomhoz

For ciklus leáll

stan · 2011. Már. 12. (Szo), 21.03
Van egy php ciklusom, ami percekig tart, mire lefut. A probléma az, hogy a ciklus nem végzi el a munkáját, hanem 1 perc 8 másodperc múlva leáll. Pedig tudom, hogy még nem ért a végére.

Nem ad ki hibaüzenetet, csak leáll mint aki jól végezte dolgát.
Próbáltam a set_time_limit-et állítani, de nincs rá hatással.

Mi okozhatja a leállást?
Ezt le lehet korlátozni a szerver beállításainál? (Én azokhoz sajnos nem férek hozzá.)
Hogyan lehetne ezt megoldani?
 
1

Gondolatolvasás

Poetro · 2011. Már. 12. (Szo), 21.41
Megpróbáltam a gondolatolvasást, de nem sikerült rájönni, hogyan is néz ki a kódod, ami leáll. Talán próbáld meg kiíratni az egyes lépéseket egy fájlba, vagy adatbázisba, és akkor látszik, hol hasal el a dolog. Vagy egyszerűen nézd meg a log fájlokat. Az is lehet, hogy például elfogy a memória. A log fájlok ezekről a hibákról tájékoztathatnak, amennyiben persze be van állítva a hiba logolása.
2

Igen, egy kódrészlet jól

rrd · 2011. Már. 12. (Szo), 21.48
Igen, egy kódrészlet jól jönne. Egyébként .htaccess-bôl PHP flag-gal állítható a time limit és a memory is.
4

FastCGI

janoszen · 2011. Már. 12. (Szo), 22.05
Már ha feltételezed, hogy nem FastCGI-t használ a szerver.
3

Hibalehetőségek

janoszen · 2011. Már. 12. (Szo), 22.04
A hiba lehetőségek közül több is lehet:

  • A programod elfogyasztotta a rendelkezésre álló időlimitet. Ezt a PHP korlátozza, mégpedig úgy, hogy a PHP kód futtatásával töltött időt számolja (tehát MySQL hívásokat, stb nem).
  • Programozási hiba lépett fel és ezért fatal errorral végződött a futás.
  • A webszervernek elfogyott a türelme. Ha pl. FastCGI-t használ a szerver, akkor itt egy bizonyos mértékű inaktivitás után kidobja a programodat. Ilyenkor használhat az, ha valamilyen kimentet (pl szóközt) küldesz ciklusonként.


Ha osztott szerveren vagy, akkor arra figyelj oda, hogy amíg a PHP szálad fut, addig nem csak a gép erőforrásait eszed, hanem a felhasználható szálakat is. Ezért a szolgáltatók nagyon morcosak tudnak lenni, úgyhogy érdemes előre leegyeztetni, hogy mi az általuk ajánlott mód a hosszú lefutású feldolgozások intézésére. Én személy szerint mindenképpen azt javasolnám, hogy ez ne webszerverből, hanem cronjobból fusson a háttérben, ha van rá lehetőség.
5

(off)

zzrek · 2011. Már. 13. (V), 14.51
(Proclub válaszai nagyon jók. Még akkor is érdemes benézni, ha úgy tűnik, hogy nem érdemes)