PHP 7.1 flush не работает вообще - PullRequest
0 голосов
/ 29 мая 2018

Мне нужно сбросить содержимое во время работы скрипта.Звучит просто, но есть несколько дискуссий по этому вопросу.Я перепробовал все, что смог найти, поэтому у меня должно быть что-то не так с сервером.Возможно, какой-то плохой конф.Я могу изменить conf сервера, если вы скажете мне, что искать.

До сих пор я проверял output_buffering (512), output_handler (без значения), zlib.output_compression (Off), zlib.output_handler (без значения).На сервере работает простой Apache без fast-cgi или около того.

Независимо от размера очищенной строки, он ничего не делает, пока не завершится сценарий - тогда все отрисовывается вместе.

Я пишупример моего окончательного кода, но я пробовал каждый пример кода, который я нашел в Интернете.

// Turn off apache-level compression
@apache_setenv('no-gzip', 1);

// Turn off compression
@ini_set('zlib.output_compression', 0);

session_write_close();

while (ob_get_level()) ob_end_flush();

header( 'Content-type: text/html; charset=utf-8' );
header('Cache-Control: no-cache, must-revalidate');
header("Content-Encoding: identity", true);

for ($i = 0; $i < 10; $i++){

    ob_start(null,4096,PHP_OUTPUT_HANDLER_FLUSHABLE);
    echo "$i";
    echo str_repeat(' ',4096);
    usleep(250000);
    ob_end_flush();
    flush();

}

Я начал работу с cakephp 3.5, но когда я не смог заставить его работать, я извлек кодотделить файл .php, и я обращаюсь к файлу напрямую.Управление сетью предполагает, что это не проблема кэширования браузера.

Спасибо за каждый совет.

РЕДАКТИРОВАТЬ: После нескольких часов работы я понял, что это былопроблема с антивирусом.И поскольку в наши дни почти каждый антивирус проверяет веб-контент, даже с SSL, я думаю, что не существует гарантированного способа передачи частичного / порционного контента пользователю.

...