Autor | Zpráva | ||
---|---|---|---|
luhla Profil |
#1 · Zasláno: 26. 1. 2008, 12:51:29
Zdravím,
Mám takový oříšek, potřebuji aby php script ukončil komunikaci s klientem ale pokračoval dál v práci, tj. v prohlížeči se stránka jeví jako dohraná ale sript na serveru stále pracuje. Našel jsem a používal několik strategií, např: <? ignore_user_abort(true); header("Connection: close"); header("Content-Length: " . strlen($zobrazeny_obsah)); echo $zobrazeny_obsah; flush(); dlouhotrvajici_funkce(); // treba. sleep(10); ?> nebo <? ob_end_clean(); header("Connection: close"); ignore_user_abort(TRUE); // optional ob_start(); echo $zobrazeny_obsah; $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); // Strange behaviour, will not work flush(); // Unless both are called ! dlouhotrvajici_funkce(); // treba. sleep(10); ?> Pod PHP 4.3.9 - IIS6 - isapi to fungovalo bezvadně, ale pod PHP 5.2.5 - IIS6 - CGI se script ukončí jakmile výstup dosáhne velikosti dané v header("Content-Length: " ). Pokud ale script zavolám z příkazové řádky, "php-cgi.exe test.php" vše proběhne v pořádku. Neměl by někdo workaround nebo radu, směr, kudy na to? Děkuji. |
||
luhla Profil |
#2 · Zasláno: 27. 1. 2008, 17:53:11
Musel jsem kapitulovat a rozjet to pod 5.2.5 -IIS6 - ISAPI tak to funguje. Pokud by ale přece někdo měl ápad, rád uvítám.
|
||
Časová prodleva: 16 let
|
0