Intereting Posts
mod_rewrite Проблема – маршрутизация страниц в строку запроса Пространства $ _POST, преобразованные в символы подчеркивания Получить первый элемент массива Могут ли выражения PHP PDO принимать имя таблицы или столбца в качестве параметра? Mysql транзакция: фиксация и откат Установите Cache-Control в ведро Google Cloud Storage Проверка URL-адресов PHP + обнаружение Не удалось подключиться к внешней базе данных SSL Postgres с Debian (ошибки разрешения сертификата) Недействительный JSON в Chrome, без проблем в Firefox (так странно!) Можем ли мы установить «allow_url_fopen» «ON» с помощью функции ini_set () в php Как проверить, изменилось ли содержимое каталога с помощью PHP? Как добавить несколько кнопок для загрузки изображений без плагинов для wordpress Что такое эквивалент Java для этого preg_replace? Передача необязательного параметра в PHP Функция Как узнать количество загруженных файлов с помощью PHP?

Потоковая / потоковая буферизация PHP больше не работает

У меня есть скрипт, который работал в PHP5.3 для обработки буферизации для определенного файла журнала, но после того, как сервер был обновлен до PHP5.5, он больше не работает. Выход должен быть html, поэтому я надеялся просто сбросить выходные данные после каждого эха.

Это сокращенная тестовая версия кода, который использовался для работы …

@apache_setenv('no-gzip', 1); @ini_set('zlib.output_compression', 0); @ini_set('implicit_flush', 1); for ($i = 0; $i < ob_get_level(); $i++) { ob_end_flush(); } ob_implicit_flush(1); set_time_limit(0); echo 'Start ...<br />'; for( $i = 0 ; $i < 10 ; $i++ ) { echo $i . '<br />'; flush(); ob_flush(); sleep(1); } echo 'End<br />'; 

Я подозреваю, что команды @ini_set не перегружают настройки, и я просто надеюсь на простой пример, который будет очищать выходные буферы. Большинство примеров онлайн – от 6 лет назад, и никто из них не работал. Я прочитал, что буферизация была переписана на PHP5.4, поэтому я задаюсь вопросом, не виноват ли это и в этом.

Я протестировал ваш скрипт и сделал некоторые исправления / улучшения

 @apache_setenv('no-gzip', 1); @ini_set('zlib.output_compression', 0); // you can dismiss this configuration, the bellow explanation is from the php.ini itself /* Implicit flush tells PHP to tell the output layer to flush itself automatically after every output block. This is equivalent to calling the PHP function flush() after each and every call to print() or echo() and each and every HTML block. */ @ini_set('implicit_flush', 1); for ($i = 0; $i < ob_get_level(); $i++) { ob_end_flush(); } ob_implicit_flush(1); set_time_limit(0); echo 'Start ...<br />'; for( $i = 0 ; $i < 10 ; $i++ ) { // put the bellow php code if the user browser is Firefox, Internet Explorer or Safari // Google Chrome just works fine with it but it do not need echo str_repeat(" ", 1024); echo $i . '<br />'; flush(); // ob_flush(); you have used flush(), why using ob_flush() there is nothing to flush anymore sleep(1); } echo 'End<br />'; 

Я не думаю, что обновление версии PHP вызывает проблему, но я не уверен
Надеюсь, это поможет 🙂