У меня есть 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
. Они также будут задерживать ответ.