Я недавно мигрировал из Amazon Эластичный бобовый стебель на мой собственный сервер Ubuntu 14.04 LTS. Все перенесено гладко, кроме одной страницы, которая использует ob_flush
и приступает к обработке. Вот этот блок кода:
<?php
//put string of page ----> $string
ob_end_clean();
header("Connection: close");
ignore_user_abort(true); // optional
ob_start();
echo ($string);
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Strange behaviour, will not work
flush(); // Unless both are called !
session_write_close(); // Added a line suggested in the comment
// Do processing here
sleep(10);
//do stuff
echo "something";
Я ожидаю, что содержимое $ string будет напечатано, вместо содержимого $ string, а затем что-то напечатано. В этом фрагменте «что-то» все равно будет напечатано. Я отключил mod_pagespeed (который в настоящее время включен) и убедился, что gzip и выходной буфер были отключены.
Вот мой php.ini
файл (у меня есть вне сайта, потому что он не ограничен и, возможно, не имеет отношения к вопросу). У меня также есть подозрение, что это может быть связано с моим файлом конфигурации Apache, который вы можете увидеть Вот. Наконец, если это как-то связано с моей проблемой, вот ссылка к моей конфигурации скорости страниц. Когда я вызываю функцию, журнал ошибок не показывает ошибок, кроме того, у меня есть root-доступ к серверу. Спасибо, что помогли мне решить эту проблему!
Джейк Сильвестр
Я думаю, что вы путаете ob_get_contents и смотрите ob_end_flush: http://php.net/manual/en/function.ob-start.php.
Других решений пока нет …