2016-07-15 22 views
1

Ich habe einen WebSocket-Server, der gelegentlich auf eingehende Verbindungen blockiert. Ich kann dieses Verhalten reproduzieren, indem ich mich über telnet server.tld 8080 verbinde und nichts eintippe.Telnet-Verbindung Stände Websocket-Server

Wenn ich die Verbindung über Telnet erhalte, aber nichts eintippe, erkennt der Server die eingehenden Verbindungen, aber der Anruf stream_socket_accept() bleibt für eine Minute stehen. Genau 60 Sekunden. Jedes Mal.

Was diese Situation verschlimmert, ist die Tatsache, dass stream_socket_accept() die Timeout-Variable UND default_socket_timeout vollständig ignoriert.

Was könnte ich tun, um das Abwürgen abzubrechen?

Antwort

1

Das default_socket_timeout wurde ignoriert, da der Socket-Server als php-cli ausgeführt wird. Die geladene php.ini-Datei unterscheidet sich also von der Apache-Modulversion von php. Das wusste ich nicht. Während stream_socket_accept nicht ordnungsgemäß funktioniert, kann ein Timeout durch ini_set('default_socket_timeout',$timeInSeconds);

erzwungen werden