@easycode
не боюсь задавать глупые вопросы ))

Как заставить работать flush() в PHP на «долгоиграющей странице» под nginx с GZip-сжатием?

Имеется сайта на WordPress
На сервере:
PHP 5.6
Server: nginx/1.15.6
Accept-Encoding: gzip, deflate

имеется "долгоиграющая" страница плагина, выполняющая 1-2-3 минуты некий процесс обработки данных
естественно у неё: set_time_limit(0) и он работает как надо.

и нужно выдавать в процессе сообщения через:

public function flush_message($message, $type='')
{
	printf( '<div class="flush-message %1$s">%2$s</div>', $type, $message ); 
	flush();
}


и очень не хочется всё это переписывать как полагается на AJAX-вызовы - ибо долго и нудно и код старый,
но в тоже время клиент пользующийся этим функционалом должен видеть что происходит и если надо просто остановить загрузку страницы.

Есть какие-то решения?

@ini_set ( 'zlib.output_compression', 0);
@ini_set ( 'implicit_flush', 1);
@ob_end_clean();


что-то не помогают как пишут...
Gzip-сжатие отключать тоже не вариант....
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dodo512
nginx.org/ru/docs/http/ngx_http_fastcgi_module.htm...
Для страницы добавить отдельный location с fastcgi_buffering off;
Или в самом скрипте добавить header('X-Accel-Buffering: no');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект