2016-07-14 5 views
-1

Я прочитал это о событиях, отправленных сервером: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events Там они приводят пример в PHP для отправки события. Я узнал, что команда заголовка должна быть самой первой инструкцией в скрипте. Однако мне нужно сделать некоторую предварительную обработку перед отправкой события:server-sent-events: как инициировать отправку

//Do some preprocessing in order the determine whether to send an event or not 
if ($sendevent) { 
    header("Content-Type: text/event-stream\n\n"); 
    // echo the data 
} 

Очевидно, что это невозможно, так как «заголовок» это не первая инструкция. Как решить эту проблему? Может ли отправка события инициироваться только путем отправки запроса от клиента?

ответ

0

The documentation for the header() function says:

Помните, что заголовок() должен вызываться до того, как фактический выход посылается.

Это означает, что вы можете добавить любое количество инструкций, но ваш скрипт не должен выводить ничего перед вызовом header(). Ваш if ничего не выводит, так что все в порядке.

Будьте осторожны, чтобы не иметь пробельных символов перед тегом открытия PHP.

+0

Я вижу! Это было непонимание на моей стороне: требование распространяется только на данные, переданные клиенту, а не на PHP-код в сценарии, который не доставляется клиенту. Большое спасибо за эту информацию! – Sempervivum