Итак, вот что я узнал.
Flush не будет работать под mod_gzip Apache или gzip Nginx, потому что, по логике, он распаковывает содержимое, и для этого он должен буферизовать содержимое, чтобы сжать его. Любой вид взлома веб-сервера может повлиять на это. Короче говоря, на стороне сервера нам нужно отключить gzip и уменьшить размер буфера fastcgi. Итак:
Также имейте эти строки под рукой, особенно если у вас нет доступа к php.ini:
@ini_set('zlib.output_compression',0);
@ini_set('implicit_flush',1);
@ob_end_clean();
set_time_limit(0);
И последнее, если оно у вас есть, прокомментируйте код ниже:
ob_start('ob_gzhandler');
ob_flush();
Тестовый код PHP:
ob_implicit_flush(1);
for ($i=0; $i<10; $i++) {
echo $i;
// this is to make the buffer achieve the minimum size in order to flush data
echo str_repeat(' ',1024*64);
sleep(1);
}