Подскажите как сделать такую штуку: PHP: <?php ignore_user_abort(true); echo '<html> Конец страницы! </html>'; flush(); // остановка загрузки/обновления страницы в браузере! // далее скрипт продолжает работать, а у юзера уже загрузилась страницы целиком и он ни о чем незнает :) // какие-либо действия.... ?>
помоему php от stdout отвязаться совсем не может.. по крайней мере как модуль апача.. хотя могу ошибаться
пока в голову приходит только мысль подключать вызывать нужный скрипт в скрытом iframe на странице, при этом ставя в начале скрипта вызываемого через фрейм: ignore_user_abort(true); анн.. нет... страница все равно ползет в статусе (загрузка идет для фрейма!)
может попробовать принудительно выставить в хэдерах content-length: байты страницы + connection: close ?
ты хочешь отдать страницу в браузер, но чтобы браузер её не показал 0о? enshtein, для чего всё это? наверника велосипед пишешь...
Mr.M.I.T. он хочет отдать страницу в браузер и отвалиться от апача.. юзер получил законченную страницу, а скрипт в это время продолжает трудиться на сервере и живёт своей собственной жизнью
Погугли по запросу "демоны на PHP" Ну или: http://www.softtutograf.com/node/2625 Часть I.я глава 5.я там про демоны на PHP попробуй может поможет.
попробуй правда самому интересно, но проверять некогда то-есть ставишь в самом начале скрипта: Код (Text): ob_start(); там, где нужно прекратить вывод: Код (Text): Header("Content-length: ".strlen(ob_get_contents())); Header("Connection: close"); ob_end_flush(); и после пытаться выполнять некоторые действия
PHP: <?php ob_start(); echo 'работает... все! стоп!'; header("Content-length: ".strlen(ob_get_contents())); header("Connection: close"); ob_end_flush(); sleep(10); ?> не пашет!
PHP: <html> <head> <title>Проверка!</title> </head> <body> Тут может быть любой текст! </body> <?php flush(); ignore_user_abort(true); echo '<script>window.stop();</script></html>'; flush(); sleep(5); ?> такое срабатывает, но только под FF3, в IE и Opera отказывается ...
enshtein как вариант решения проблемы: после выполнения скрипта остальные действия поместить в другой скрипт, после чего его дёрнуть через сокеты и сразу закрыть соединение.. второй скрипт будет выполняться, выплёвывая данные вникуда, а у первого всё завершиться
Kreker а flush()? а иногда и без flush'a частями отдаёт.. всё не однозначно, как они там обмениваются между собой - хз.. но отрубиться от выходного потока вроде правда нельзя
если не ошибаюсь, в этом случае чтобы браузер начал отдавать контент, нада в самом начале вывести 1024 символа (пробелы напр) Код (Text): echo str_pad( ' ',1024); ob_start(); .....
Код (Text): <?php echo "START"; $pid = pcntl_fork(); if ($pid == -1) { die("could not fork"); } else { if ($pid) { // это родитель echo "<br>STOP"; } else { // это потомок for($i=0;$i<5;$i++) { sleep(1); }; $r=fopen('c:\1.txt',"w"); fwrite($r,"123"); fclose($r); } }; ?>