Autor Zpráva
luhla
Profil
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
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.

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: