Можно отправить HTTP 1.1 нижние колонтитулы из PHP с помощью Transfer-Encoding: chunked? - PullRequest
1 голос
/ 24 июня 2011

Попробовав и не получив ручную реализацию chunked Transfer-Encoding с gzipped Content-Encoding, работающей на PHP, я теперь вернусь к использованию mod_deflate в Apache, который отлично работает.

Единственная проблема в том, что есть некоторые нижние колонтитулы, которые я хотел бы отправить вместе с ответом (скажем, Last-Modified или ETag, поэтому я могу выполнить 304 запроса на один и тот же контент). Спецификация HTTP 1.1 предусматривает нижние колонтитулы (как и заголовки, только они идут последними) в ответах по частям, но, похоже, PHP не предоставляет такую ​​функциональность.

Возможно

(Ручная реализация была великолепна - за исключением того, что я не мастер gzip, и различные функции zlib, предоставляемые PHP, не включают в себя тот, который создает допустимые фрагменты gzip. Мне удалось заставить его работать ~ 50% времени - но остальные 50% сломаются. Дох!)

1 Ответ

0 голосов
/ 24 июня 2011

AFAIK, php запускается после публикации и перед кодированием чанка.Единственный способ, которым я знаю, как это сделать, это установить обработчик вывода, который выше чанкинга.Я мог делать такие вещи только через модуль C или mod_perl, поскольку он позволяет устанавливать обработчики в любой точке запроса.У меня была похожая проблема с попыткой разрешить большие загрузки, потому что php никогда не запускается до тех пор, пока не завершится публикация.Таким образом, нет способа проверить, «вошел ли пользователь в систему» ​​или «разрешить только этому сценарию получать большие почтовые данные».

...