server-sent-events: 如何触发发送

server-sent-events: How to trigger sending

我阅读了有关服务器发送事件的内容:https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events 他们在 PHP 中给出了发送事件的示例。我了解到 header 指令必须是脚本中的第一条指令。但是我需要在发送事件之前做一些预处理:

//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
}

显然这是不可能的,因为 "header" 不是第一条指令。如何解决这个问题呢?只能通过客户端发送请求来触发发送事件吗?

The documentation for the header() function says:

Remember that header() must be called before any actual output is sent.

这意味着您可以包含任意数量的指令,但您的脚本在调用 header() 之前不得输出任何内容。 你的 if 没有输出任何东西,所以没问题。

注意 PHP 开始标记前不要有空格字符。