2016-07-14 102 views
-1

我讀到這對服務器發送的事件:https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events在那裏,他們給在PHP中比如將一個事件。我已經瞭解到,頭文件指令必須是腳本中的第一條指令。不過,我需要在發送事件之前做一些預處理:服務器發送的事件:如何觸發發送

//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()函數被髮送任何實際輸出之前必須被調用。

這意味着你可以包括任何數量的指令,但你的腳本必須在調用之前header()不輸出任何東西。 您if不輸出任何東西,所以它的罰款。

小心的PHP開始標記之前不要有空格字符。

+0

我明白了!這是在我身邊一個誤區:要求僅適用於傳輸到客戶端的數據,而不是在不被傳遞到客戶端腳本的PHP代碼。非常感謝這些信息! – Sempervivum