2017-09-22 2 views
0

Ich kann das nicht herausfinden.Fehler beim Ausgeben von SSE

Ich führe gerade meine SSE (Server gesendet Ereignis) Back-End-Code in einer eigenen Datei.

Ich rufe diese Datei über shell_exec() und übergebe 1 Variable, die ich an den Client senden möchte.

Mein Problem ist, ich kann sehen, dass die Zeichenfolge als $ argv [1] übergeben wird, aber ich kann es nicht an den Client senden, da es 0 zurückgibt. Ich kann es manuell in die Sendefunktion eingeben und es wird Arbeit. Ich kann $ argv [1] === 'hier seinen Wert einfügen' vergleichen und es wird True ergeben, aber aus irgendeinem Grund wird es nicht an den Client senden, wenn ich $ argv [1] oder eine andere Variable, die ich zugewiesen habe, verwende Wert zu.

+1

'$ argv' und' $ arv' erscheinen nicht bei Code bei Frage – guest271314

+0

Sie haben eine Funktion erstellt ... sse_send ... Sie nennen nie die Funktion ... auch, das ist nicht mit Javascript zu tun Alle –

+0

SSE == Server SENT Ereignisse – RiggsFolly

Antwort

0

Verwenden Sie include() Ihrer externen Datei, nicht shell_exec(). Es wird effizienter, zuverlässiger (keine Chance, sich in Sicherheitsmodus-Beschränkungen zu verfangen) und vor allem sollte es dann funktionieren.

Ich habe angenommen, dass das PHP-Skript Aufruf shell_exec() in den Webserver ausgeführt wird. Wenn Sie ein PHP-Skript mit shell_exec() aufrufen, wird es als separater PHP-Prozess mit einer eigenen stdin/stdout/etc ausgeführt. Sie müssen flush() in dem Prozess ausführen, der in Ihrem Webserver ausgeführt wird, und dasselbe für ob_flush().

+0

Danke für Ihre Eingabe Darren! Mein Problem war, dass ich nicht verstehen konnte, wie ich die Dinge richtig einrichten sollte. Ich konnte es zur Arbeit bringen, indem ich eine get-Variable an meine SSE.php-Datei übergeben, die den Ladebalken identifizieren würde, den ich zu aktualisieren versuchte - ich würde dann den Fortschritt in der DB aufzeichnen und alle meine SSE.php musste Das war ein Fortschritt, der an den Kunden zurückging. Die Aufzeichnung würde dann entfernt, sobald sie abgeschlossen ist. Das Erreichen eines Ladebalkens für mein Skript war schwieriger, als es hätte sein sollen! Ich habe versucht, es durch Sitzungen zu tun, aber gelernt, Session-Sperre auf die harte Tour! – Ayn

Verwandte Themen