Pokračovat i po vypršení limitu – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pokračovat i po vypršení limitu – PHP – Fórum – Programujte.comPokračovat i po vypršení limitu – PHP – Fórum – Programujte.com

 

Figa0
Super člen
11. 6. 2009   #1
-
0
-

Ahoj mám script a ten pracuje v cyklu se soubory a je casove narocny. Jak bez
AJAXu udělám aby kdyz se bude blizit limit se script znovu nacetl a pokracoval
tam kde skoncil? Nebo to jde jenom pomoci ajaxu? Předem děkuji za odpověď.

Nahlásit jako SPAM
IP: 94.246.126.–
bukaj_0010
Věrný člen
11. 6. 2009   #2
-
0
-

Figa
Zkusil bych se zaprvé podívat, jestli by skript nešel zoptimalizovat tak, aby nepotřeboval tolik času. Můžeš zkusit pomocí set_time_limit()[1] nastavit, jak dlouho se ještě může skript vykonávat, či limit ouplně zrušit. Jinak se to opravdu bude muset dělat tak, že akci budeš muset přerušovat před překročením limitu a poté znovu obnovovat.

[1] http://php.net/set_time_limit

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Figa0
Super člen
11. 6. 2009   #3
-
0
-

To bukaj_001 : No on limit nastavit nejde kvuli safe _mode on. jak udelat to preruseni? Pomoci sleep(); ???

Nahlásit jako SPAM
IP: 217.77.165.–
bukaj_0010
Věrný člen
12. 6. 2009   #4
-
0
-

Figa
jak udelat to preruseni? Pomoci sleep(); ???
Kouknul ses vůbec, k čemu sleep()[1] je? ;o)

Na začátku skriptu zkontroluješ čas (time()[2]) a v každé iteraci cyklu (či po každé nároční operaci) zkontroluješ, jaký je čas teď. A pokud rozdíl bude větší než tebou určený limit (který by měl být menší než time_limit PHP), přerušíš cyklus, uložíš (do DB či podobně) si nějaké informace o tom, kde jsi skončil, spolud s identifikátorem (ID) operace a pošleš hlavičku Refresh[3]:

Refresh: 0; http://domena.tld/mujsuperaledlouhotrvajiciskript.php?id=$ID

Skript přijme znovu požadavek a zkontroluje $_GET['id']. Pokud je nastaveno na nějaké ID operace, co je uloženo v úložišti (DB...), pokračuje podle informací k operaci; jinak zahájí novou operaci. A tak pořád dokola, dokud operace není dokončena. Jedno možné řešení. AJAX do toho zaplétat můžeš, ale nemusíš.

[1] http://php.net/sleep
[2] http://php.net/time
[3] http://en.wikipedia.org/wiki/URL_redirection#Refresh_Meta_tag_and_HTTP_refresh_header

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Jak pokračovat dál ? — založil Ondra

Jak pokračovat s javou — založil Jan Klimeš

Vypršení Session — založil schimpanze

Vypršení Sessions — založil Yohaku

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý