我有一个服务器脚本正在运行,我使用 Ctrl + Z 提前关闭它。当我再次尝试运行它时,它告诉我端口1001已经在使用中。在实时环境中,脚本可能会崩溃或其他可能触发它提前结束的风险。如何在连接之前自动取消绑定此端口?我将使用一个我知道其他任何东西都不会使用的端口,因此可以安全地自动取消绑定。
目前我的服务器脚本是基本的。
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
1001
);
$server->run();
我按照http://socketo.me/docs/hello-world找到的指南进行了操作。一切都按预期工作,我现在只是坚持这个问题。
我在Centos 7上运行PHP 5.4。
答案 0 :(得分:0)
我无法通过命令行找到任何方法。只有我能看到的解决方案,如果有人发现是通过向websocket发送消息来杀死脚本,那可能会有麻烦。给websocket服务器的每条消息都有一个“动作”。然后,交换机将为每个操作执行某些操作。创建一个无法猜测的随机动作。在此开关中使用die();
。这将终止脚本并取消绑定端口,因此您无需在服务器需要重新启动时手动查找PID并将其取消。
这可以用来快速重启.sh脚本。使用php进行一个websocket调用来杀死服务器并从bash脚本调用,然后调用php server.php然后你去。