Для php flush – как отключить gzip для определенного файла?

У меня есть ajax-вызов somefile.php. Я хочу, чтобы PHP-скрипт выполнял простую задачу, а затем отправлял обратно данные пользователю и выполнял очень много времени. поэтому мне нужно очистить вывод после первой простой задачи. это не работает, возможно, потому что у меня есть gzip.

Я определенно не хочу отключать gzip через весь vhost, а также не во всех папках, где есть somefile.php. я просто хочу отключить его для этого конкретного файла. это возможно?

РЕДАКТИРОВАТЬ:

это то, что я включил в свой apache conf:

<FilesMatch \.php$> SetEnv no-gzip 1 </FilesMatch> 

это мой php-скрипт:

 <?php $sucesss = @apache_setenv('no-gzip', 1); @ini_set('zlib.output_compression', 0); @ini_set('implicit_flush', 1); ob_start(); for($i=0;$i<10;$i++) { echo 'printing...'; ob_flush(); flush(); sleep(1); } ?> 

он не работает. Я все еще вижу все выходные вместе через 10 секунд.

Я искал решения по той же проблеме. Это то, что сработало для меня, но, к сожалению, оно не является заголовком VALID.

 <? header("Content-Encoding: none"); ?> 

Поместите это в httpd.conf

 # exclude certain page requests (eg for requesting getMyFile.php?action=getFile&id=3 as non-compressed) SetEnvIfNoCase Request_URI getMyFile\.php$ no-gzip dont-vary 

apache_setenv() верен. См. Документацию.

http://php.net/manual/en/function.apache-setenv.php#60530

 apache_setenv('no-gzip', '1'); 

Ваша проблема в том, что вы включили буферизацию вывода с помощью ob_start() . Прокомментируйте это.

Я узнал, что apache_setenv() доступен только с модулем PHP Apache. Он недоступен при использовании FPM. В этом случае вы должны использовать .htaccess чтобы отключить GZip. Примером является

https://stackoverflow.com/a/36212238/148844

 RewriteRule ^dashboard/index - [E=no-gzip:1] SetEnvIf REDIRECT_no-gzip 1 no-gzip 

Значение - означает NOOP, E означает заданную переменную, 1 – значение. После перенаправления переменные переименовываются и добавляются с помощью REDIRECT_ .

Если вывод все еще буферизуется, проверьте, проходите ли вы через прокси-сервер или кеш. Посмотрите, есть ли заголовки типа Via: 1.1 varnish или Via: 1.1 vegur . Они также будут задерживать ответ.