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