Kann ein PHP-Skript erkennen, wenn ein socket geschlossen wurde?
Wie kann ein PHP-script erkennen, ob ein sockel wurde geschlossen durch die remote-Partei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie kann ein PHP-script erkennen, ob ein sockel wurde geschlossen durch die remote-Partei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom socket_read():
Dies ist ziemlich standard-Ansatz zu erkennen, wenn ein socket geschlossen ist in den meisten Sprachen. Ich glaube nicht, dass PHP bietet eine direkte event-Stil-Benachrichtigung (außer vielleicht der etwas in der BIRNE).
""
ist, was zurückgegeben wird, wenn keine Daten (einschließlich non-blocking-Modus). Dies ist, getrennt und Verschieden zufalse
.fread($socket)
gibt leere Zeichenfolge ist, wird sofort, ohne zu warten, für die socket-timeout.(Nein, dies ist nicht eine Reale Antwort, aber das ist die hackish Lösung habe ich in meinem code ATM. Dieses Verhalten könnte ebenfalls windows-spezifisch.)
fread($socket)
wenn die Verbindung geöffnet ist?Dies ist keine direkte Antwort auf die Frage, aber vielleicht wertvollen Hinweis.
Wenn Sie anrufen
socket_close($socket);
in mehreren Orten und wollen prüfen, ob Sie bereits geschlossen der Steckdose, bevor oder nicht, Sie können es tun, indem Sie mit dem folgenden Vergleich:Ich fand es durch dumping-Buchse vor und nach dem schließen
var_dump($socket);
resource(5) of type (Socket)
resource(5) of type (Unknown)
Aber es wird nicht Ihnen sagen, ob das der socket geschlossen von anderer Seite oder nicht. Im Grunde, wenn die Verbindung aufgebaut es gibt immer zwei buchsen - eine für jede Seite. So
get_resource_type
wird nur prüfen, Ihre eigenen Ressourcen, nicht auf der anderen Seite.