关闭从stream_socket_server()
返回的资源非常慢(约0.5秒),正如此脚本所测试的那样:
<?php
echo "Creating socket...";
$s = stream_socket_server("tcp://127.0.0.1:4567");
echo "done\n";
echo "Closing socket...";
fclose($s);
echo "done\n";
?>
90%的执行时间花在fclose($s);
等效的C ++应用程序在尝试关闭侦听套接字时不会遇到这段延迟,而是关闭&lt; 0.03秒是否存在影响此问题的特定于PHP的配置?
php.ini
答案 0 :(得分:0)
好的,
所以,这里发生的是,你不仅仅是等待应用程序关闭套接字,而且还需要等待打开的TCP套接字在网络层关闭。
当你有一个打开的套接字时,需要来自服务器和对等体的FIN关闭套接字,或者如果任何一方收到FIN,则默认超时(大多数为600秒,具体取决于设置)。
你可以尝试帮助加快速度的事情是关闭你的套接字:
stream_socket_shutdown