Если я загрузить этот скрипт в хроме с моего локального сервера на XAMPP:ob_implicit_flush(), Flush(), ob_flush() - не работает на удаленном сервере
header("Content-Type:text/plain");
set_time_limit(0);
$max = 40;
for ($i = 0; $i < $max; $i++) {
$response = array( 'server time: ' . date("h:i:s", time()), 'progress' => round($i/$max*100));
echo json_encode($response);
ob_flush();
flush();
sleep(1);
}
ob_clean();
Он работает, как и следовало ожидать, каждый второй на странице отображается новый ответ. Однако, когда я загружаю его на свой удаленный сервер (работает с той же версией php), он ждет, пока весь скрипт не завершит работу до того, как он отобразит вывод. В очень длинных сценариях он обновляет выходные данные каждые 30-60 секунд или около того.
Как следует из названия, я попытался использовать все различные функции флеша, но ничего не работает. Вероятно, есть какая-то разница в php.ini моего локального сервера и моего удаленного сервера, но я не знаю, что.
Пожалуйста, помогите.
--- EDIT ---
Я делал еще несколько испытаний. Я заметил, что именно он обновляет только каждые 4096 байт, что, по-моему, является значением php ini моего удаленного сервера для «output_buffering». Однако по какой-то причине, если я изменяю output_buffering на '1' или 'off', ничего не меняется. Он по-прежнему обновляет только каждые 4096 байт.
Я тестирую 2 идентичных сценария на разных серверах в одном браузере.
[doc-страница 'flush()'] (http://php.net/manual/en/function.flush.php) полна отказов от того, почему это может или не может работать. Это может быть то, что вы даже не можете исправить. – GolezTrol
Скорее всего, Apache буферизует выход ..... это не эффективный механизм для использования для таймера. –
Я делал еще несколько тестов. Я заметил, что именно он обновляет только каждые 4096 байт, что, по-моему, является значением php ini моего удаленного сервера для «output_buffering». Однако по какой-то причине, если я изменяю output_buffering на «1» или «off», ничего не меняется. Он по-прежнему обновляет только каждые 4096 байт. – hedgehog90