Можно отправлять нижние колонтитулы HTTP 1.1 из PHP с использованием Transfer-Encoding: chunked?

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

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

Возможный?

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


person Don MacAskill    schedule 24.06.2011    source источник


Ответы (1)


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

person Rahly    schedule 24.06.2011