Maik
Angesehenes Mitglied
Hallo!
Ich habe hier ein Problem mit PHP und seinen Socket Funktionen. Ich habe die Socket-Funktionen in dutzende Klassen eingearbeit und dann abgeleitet daher kann ich keine Quellen geben. Aber ich umschreib mal das Problem.
Ich habe Clients die mit fsockopen verbinden, mit einem 1 Sekunden Timeout (1 Sekunde reicht, da Client & Server auf dem selben Rechner liegen). Nach dem die Verbindung hergestellt wurde schickt der Client 1 Byte an den Server um sich zu identifizieren. Danach wartet er auf Befehle vom Server.
Also der Ablauf des Clients ist so:
Also der Ablauf des Servers:
Nun nach vielen Tests bin ich soweit, dass ich festgestellt habe, das die Sockets die zuviel sind, nur mit stream_socket_accept angenommen wurden, aber danach ist nichts damit passiert. Es wurde noch nicht mal der Lesebefehl ausgeführt. Das heißt, vom Client wurde nicht in die Verbindung geschrieben.
Eine konkrete Lösung wird es ohne Quelltext nicht geben. Es muss doch einen Grund geben warum ein Socket angenommen wird, aber von dem danach keine Aktion mehr kommt. Und ohne von einem Socket zu lesen bekommt man ja dummerweise auch nicht mit, ob es den Socket noch gibt.
Hätte evtl. irgendjemand einen Verdacht?
Ich habe hier ein Problem mit PHP und seinen Socket Funktionen. Ich habe die Socket-Funktionen in dutzende Klassen eingearbeit und dann abgeleitet daher kann ich keine Quellen geben. Aber ich umschreib mal das Problem.
Ich habe Clients die mit fsockopen verbinden, mit einem 1 Sekunden Timeout (1 Sekunde reicht, da Client & Server auf dem selben Rechner liegen). Nach dem die Verbindung hergestellt wurde schickt der Client 1 Byte an den Server um sich zu identifizieren. Danach wartet er auf Befehle vom Server.
Also der Ablauf des Clients ist so:
- Mit Server verbinden
- Erkennungsbyte schicken
- Auf Aufgabe warten
- Aufgabe bearbeiten
Also der Ablauf des Servers:
- Auf neuen Client warten
- neuen Client annehmen
- Erkennungsbyte vom Client lesen
- Aufgabe übermitteln
Nun nach vielen Tests bin ich soweit, dass ich festgestellt habe, das die Sockets die zuviel sind, nur mit stream_socket_accept angenommen wurden, aber danach ist nichts damit passiert. Es wurde noch nicht mal der Lesebefehl ausgeführt. Das heißt, vom Client wurde nicht in die Verbindung geschrieben.
Eine konkrete Lösung wird es ohne Quelltext nicht geben. Es muss doch einen Grund geben warum ein Socket angenommen wird, aber von dem danach keine Aktion mehr kommt. Und ohne von einem Socket zu lesen bekommt man ja dummerweise auch nicht mit, ob es den Socket noch gibt.
Hätte evtl. irgendjemand einen Verdacht?