2016-07-14 5 views
-1

Ich lese das über Server gesendet Ereignisse: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events Dort geben sie ein Beispiel in PHP für das Senden eines Ereignisses. Ich habe gelernt, dass die Header-Anweisung die erste Anweisung in einem Skript sein muss. Allerdings brauche ich einige Vorverarbeitung zu tun, bevor das Ereignis zu senden:server-sent-events: Wie man das Senden auslöst

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

Offensichtlich ist dies nicht möglich ist, als „Header“ nicht der erste Befehl. Wie man dieses Problem löst? Kann das Senden eines Ereignisses nur ausgelöst werden, indem eine Anfrage vom Client gesendet wird?

Antwort

0

The documentation for the header() function says:

Denken Sie daran, dass die header() aufgerufen werden muss, bevor eine Ausgabe gesendet wird.

Es bedeutet, dass Sie eine beliebige Anzahl von Anweisungen einfügen können, aber Ihr Skript darf vor dem Aufruf von header() nichts ausgeben. Ihre if gibt nichts aus, also ist es in Ordnung.

Achten Sie darauf, dass vor dem PHP-Eröffnungs-Tag keine Whitespace-Zeichen vorhanden sind.

+0

Ich sehe! Dies war ein Missverständnis auf meiner Seite: Die Anforderung gilt nur für Daten, die an den Client übertragen werden, nicht an PHP-Code im Skript, der nicht an den Client geliefert wird. Vielen Dank für diese Information! – Sempervivum

Verwandte Themen