我有一个websocket服务器,偶尔会在传入连接上停滞。我可以通过telnet server.tld 8080
连接而不键入任何内容来重现此行为。
当我通过telnet建立连接但没有键入任何内容时,服务器会检测到传入的连接,但stream_socket_accept()
呼叫将停止一分钟。正好60秒。每次。
使这种情况变得更糟的是,stream_socket_accept()
完全忽略了超时变量AND default_socket_timeout
。
我该怎么做才能中止失速?
default_socket_timeout被忽略,因为套接字服务器以php-cli运行。所以加载的 php.ini 文件与 php 的 apache 模块版本不同。我不知道这一点。当stream_socket_accept无法正常工作时,可以通过ini_set('default_socket_timeout',$timeInSeconds);
强制超时