Определить, если вывод уже отправлен в php - PullRequest
1 голос
/ 16 января 2011

Я отправляю контент в браузер через gzip, если они его поддерживают (для css / js), в настоящее время я просто использую:

stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== False

Однако, если до этого был какой-то вывод (например, ошибка / предупреждение php), это нарушает вывод gzip, и браузер (по крайней мере, firefox) сообщает, что сайт использует неподдерживаемую форму сжатия (из-за выход).

Итак, есть ли способ определить, был ли отправлен вывод? или есть лучший способ сделать это?

Ответы [ 4 ]

4 голосов
/ 16 января 2011

Вы можете использовать headers_sent() Я верю.

1 голос
/ 16 января 2011

В дополнение к ответу @prodigitalson, который является правильным, вы можете использовать функции ob_ *, ob_start, ob_start и т. Д. Это будет обрабатывать выходной буфер (ob), и все отправленные данные на самом деле не отправляются.В любое время после ob_start вы можете очистить ( ob_end_flush ) буфер, и он действительно будет отправлен, но вы также можете использовать ob_end_clean для очисткисодержимое буфера.Ознакомьтесь с документацией .

Буферизация вывода может ускорить исходящую передачу ответа и позволит вам стереть все, что вы уже ответили, что всегда является проблемой в PHP.Хороший инструмент.

1 голос
/ 16 января 2011

PHP предоставляет функцию headers_sent() для этой цели.

0 голосов
/ 16 января 2011

вы можете использовать

ob_start () ob_flush ()

для захвата любого сгенерированного вывода и либо вывода его как правильного сообщения об ошибке, либо его игнорирования.*

...