2016-07-15 4 views
1

У меня есть сервер websocket, который иногда ложится на входящие соединения. Я могу воспроизвести это поведение, подключившись через telnet server.tld 8080 и не набрав ничего.telnet connection stalls websocket server

Когда я объявляю подключение через telnet, но не набираю ничего, сервер обнаруживает входящие соединения, но вызов stream_socket_accept() остановится на одну минуту. Точно 60 секунд. Каждый раз.

Что ухудшает эту ситуацию, так это то, что stream_socket_accept() полностью игнорирует переменную таймаута И default_socket_timeout.

Что я могу сделать, чтобы прервать срыв?

ответ

1

Значение default_socket_timeout игнорировалось, поскольку сервер сокетов работает как php-cli. Таким образом, загруженный файл php.ini отличается от версии php пакета apache. Я этого не знал. В то время как stream_socket_accept не работает должным образом, таймаут может быть вызван ini_set('default_socket_timeout',$timeInSeconds);