как показать результаты, пока скрипт php все еще запущен

поэтому я попытался показать результаты, пока скрипт все еще выполняется

но по какой-то причине он не работает, поэтому вот что я до сих пор:

ob_start(); include "../../common.php"; set_time_limit (0); $start = (string) $_GET['start']; $end = (string) $_GET['end']; for($i = $start; strcmp($i, $end); $i = bcadd($i, 1)){ echo $i; ob_flush(); } ob_end_flush(); 

ОБНОВЛЕННЫЙ КОД

* Заметьте, что этот код еще не работает!

 set_time_limit(0); $start = $_GET['start']; $end = $_GET['end']; for(;$start < $end;$start++){ $content = file_get_contents("[some internal page]"); echo $content; usleep(10); flush(); } 

Попробуйте добавить вызов flush() после вызова ob_flush() . Это будет работать, только если ваш сервер настроен так, чтобы он мог это сделать, и не гарантирует, что клиент будет обрабатывать его разумно, но это ваш лучший выбор.

Одна точка привязки, с которой я столкнулся, заключается в том, что у вас установлено zlib.output_compression, которое вы абсолютно не можете сделать, полная остановка. Процесс сжатия вывода zlib запускается до того, как любой из ваших кодов будет выполнен и не будет контролироваться вашим скриптом во время выполнения с помощью ini_set() и т.п.

Обычно вам нужно вызвать flush() и ob_flush() . См .: http://php.net/manual/en/function.flush.php

Кроме того, вы не можете ничего сделать с буфером браузера на стороне клиента. Браузер будет хранить данные как можно дольше или меньше. Некоторые серверы также не могут поддерживать сброс своего буфера.

После ob_flush (); добавить flush (); Это фактически сбрасывает буфер записи и выходные буферы. ob_flush сбрасывается в буфер записи, flush () затем выталкивает его клиенту. Обычно, по крайней мере.