PHP set_time_limit

PHP set_time_limit
2021-10-27T14:41:53+02:00
2021-11-02T07:30:00+01:00
2022-12-06T22:25:37+01:00
*deleted_23419333
Sziasztok!

Van egy PHP fájlom, ami körülbelül 2-3 perc alatt futna le, de 1 perc 40 másodperc körül mindig megáll. A fájl elejére írtam a set_time_limit( 300 )-at, vagyis 5 percig futhatna, valamint a WHM-ben is beállítottam a php.ini-nél a max_execution_time-ot szintén 300-ra. A phpinfo függvénnyel ellenőriztem is és valóban sikerült átállítanom 300-ra mert ott is ezt írja ki, de akkor mi lehet az ami megfogja körülbelül 90-110 másodpercnél a fájl további futását?

GET-es kérésről van szó, így a max_input_time-ot is átállítottam 300-ra, de sajnos hiába.
Mutasd a teljes hozzászólást!
A szoftvered alapban tervezési hibás. Egyik valamirevaló szolgáltató sem fogja engedni hogy ilyen hosszú ideig webszerveren át futtass PHP-t. A megoldás az hogy áttervezed a programod, és a hosszú futásidejű dolgokat háttérfolyamatba szervezed, amit ütemezett feladatként CLI-ből futtatott PHP-val végzel el. Hogy az adott szerveren mi akadályozza azt amit írsz, az ottani üzemeltetés fogja megmondani. A legvalószínűbb az hogy a PHP CGI / FPM módban fut és proxy van előtte, aminek a timeout-jára futsz, nem pedig magának a PHP-nek a timeout-jára. Kapcsolj be minden naplózást és nézegesd a PHP / webszerver / proxy hibanaplókat, ott lesz a válasz.
Mutasd a teljes hozzászólást!

  • A szoftvered alapban tervezési hibás.

    Igen, ez igaz.

    Egyik valamirevaló szolgáltató sem fogja engedni.

    Ez (sajnos) engedi.

    A megoldás az hogy áttervezed a programod.

    Ez a hosszútávú célom, de most tűzoltásra kellene egy gyors megoldás.

    Az ottani üzemeltetés fogja megmondani.

    Jó lenne, de szerintem én többet értek a dolgokhoz mint ők. Gondolhatod...

    CGI/FPM

    Igen, WHM-ben megnéztem és mindkettő igaz, viszont kitudom ezeket kapcsolni, de mivel nem tudom mit jelentenek így nem merem vagy merjem?

    Proxy van előtte

    Igen, van, de a CloudFlare azt írja, hogy a szerver fut timeout-ra, nem ők.

    Kapcsolj be minden naplózást.

    Hol és hogyan? WHM és cPanel.

    Egyébként cURL lekérdezés futna ilyen sokáig, de szerintem egy sleep( 300 ) is megbukna.
    Mutasd a teljes hozzászólást!
  • Innentől üzemeltetési kérdés, nem erre a fórumra tartozik. Nem tűzoltás kell, hanem normális kód. Futtasd a PHP-t Apache modulként (ne CGI / FPM módban), aztán addig fog futni ameddig akarod. Cloudflare így is vissza fogja dobni. Felesleges gányolni. Egy ökölszabály: ha 2-3 másodpercnél tovább fut valami webszerveren át, az már régen rossz.
    Mutasd a teljes hozzászólást!
  • Mégis a CloudFlare volt a ludas. Csak 100 másodpercig vár, aztán hibára fut, ha nincs válasz. Talán a CF nem ingyenes verziójában ez az érték növelhető valameddig.
    Mutasd a teljes hozzászólást!
  • Írtam már az első hozzászólásomban: proxy. Azt is írtam hogy ez így rossz. Nem a CF a hibás. A tervező / programozó a hibás. Soha, SOHA nem futtatunk webszerveren át hosszú futásidejű PHP programot. Pontosan az ellenkezőjére, a minimális válaszidőre kell törekedni. A hosszú ideig tartó feladatokat háttérfolyamatokba kell szervezni, jól tervezett alkalmazás esetén ezek akár más programnyelven is elvégezhetőek (amik az adott feladatra hatékonyabbak).
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd