我正在使用PHP-Websockets创建一个简单的聊天服务器。当我第一次运行在我的服务器上创建websocket的php脚本时,我的一切工作正常。如果脚本由于某种原因停止并且我尝试重新运行它,则会收到一条错误消息,指出该脚本无法绑定套接字,因为它已经存在。
如何创建一个脚本来查找这个旧套接字(假设我知道它正在运行哪个端口)并关闭它以便我可以建立新的连接?
答案 0 :(得分:2)
如果你有shell访问权限,我会使用以下命令来推断使用该套接字(端口)的进程的PID。
netstat --tcp --listening --program
然后杀死那个过程。
kill %pid%
为了防止这种情况发生,我会仔细检查你的脚本是否正常终止并先关闭套接字。
答案 1 :(得分:0)
在 Ubuntu(linux) 服务器上测试:
我是这样解决的:
使用 exec()
函数可以轻松终止正在运行的网络套接字:
让一个名为 socketControl.php
的 php 文件和代码:
exec('kill $(pidof php)');
这应该会取消当前在服务器中运行的 php websocket。