Autor Zpráva
fuckin
Profil
Ahojte, potřebuju menší radu.

Nechápu význam omezení doby spusteni php skriptu (Maximum execution time of 30 seconds exceeded). V podstatě je jasné, že to může běžet max 30 sekund, nicméně to neodpovídá realitě, klidně to běží i několik minut. Už jsem se s tím mnohokrát setkal a přijde mně to jako pěkná kravina. Teďka dělam skript který vytváří velké soubory, trvá třeba i několik minut, a jede to bez problému.

V čem teda spočívá ta hlavní pointa?
marek094
Profil *
Myslím že to bude v .htaccess
fuckin
Profil
marek094:
Myslím že to bude v .htaccess
Cože? Pokud nerozumíš danému problému tak sem nepiš, dík.
AM_
Profil
Pokud dobře chápu tvojí otázku, chceš vědět, k čemu to omezení je.
Pointa je v tom, že většina PHP skriptů běží řádově desítky milisekund. Takže aby hostingové servery nebyly zbytečně zatěžovány špatně napsanými zacyklenými skripty, které poběží navěky, je zde možnost omezení doby běhu, která je defaultně 30 sekund, což pro obvyklé stránky stačí (koneckonců, PHP má preprocesorovat webové stránky, a se stránkou, která se načítá půl minuty, je něco špatně).
Pokud předpokládáš, že skript poběží déle, musíš to explicitně nastavit (v php.ini, v .htaccess nebo funkcí set_time_limit()), přičemž hodnota 0 znamená bez omezení.
jenikkozak
Profil
AM_:
Myslím (mohu se však mýlit), že fuckin by chtěl vědět, čeho se vlastně ten limit týká, když samotný skript může běžet déle, než je stanovený limit.

To může být způsobeno tím, že do max_execution_time se nezapočítává zpracovávání vstupních dat, na což slouží omezení pomocí max_input_time.
fuckin
Profil
AM_:
No to je jasné, ale v praxi některé skripty běží i několik minut, ikdyž je tam nastaveno max 30sekund.

jenikkozak:
Díky, přesně toto jsem chtěl vědět.
DJ Miky
Profil
Do max_execution_time se na unixových systémech nezapočítává ani čas strávený spaním (sleep()), čas strávený zápisy do a čtením ze souborů, nebo čas strávený čekáním na výsledek SQL dotazu. Ve Windows se naopak započítává celkový čas včetně všeho čekání.

http://www.php.net/set_time_limit
Note:
The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running. This is not true on Windows where the measured time is real.
Karlos
Profil *
No a jakým způsobem tedy dokážu zabít script, který beží déle než muj max_execution_time = 10 a cte ze souboru, nebo ceka na soubor? V unixovem systému. Díky za reakci.
miho
Profil *
Vypadá to, že se do stráveného času (na Linuxu) nezapočítává ani čas, kdy skript čeká na semaforu na funkci
sem_acquire
(například při synchronizaci více skriptů tak, aby se náročný výpočet neprováděl vícekrát současně). On defakto v této době spí.
AM_
Profil
miho:
to je dost podstatná informace na to, abys ji sem napsal, vytáhl vlákno mezi top, všichni si ho znova přečetli, zjistili, že tu vlastně nikdo nic vědět nepotřebuje, a zase ho zavřeli.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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