取消绑定过去 Ratchet websocket 服务器使用的端口

Unbind port used from past Ratchet websocket server

我有一个服务器脚本 运行ning,我使用 Ctrl+Z 过早地关闭了它。当我再次尝试 运行 时,它告诉我端口 1001 已被使用。在实时环境中,始终存在脚本崩溃或其他原因可能触发脚本提前结束的风险。如何在连接之前自动解绑这个端口?我将使用一个我不知道其他任何东西都不会使用的端口,因此自动解除绑定是安全的。

目前我的服务器脚本是基本的。

    $server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    1001
);

$server->run();

我按照此处 http://socketo.me/docs/hello-world 找到的指南进行操作。一切都按预期进行,我现在只是被这个问题困住了。

我在 Centos 7 上 运行ning PHP 5.4。

我找不到通过命令行执行此操作的任何方法。我能看到的唯一解决方案,如果有人发现是通过向 websocket 发送消息来终止脚本,这可能会很麻烦。每条发送到 websocket 服务器的消息都有一个 "action"。然后开关将为每个动作做一些事情。创建一个无法猜测的随机动作。在此开关中使用 die();。这将终止脚本并取消绑定端口,因此您无需在服务器需要重新启动时去查找 PID 并手动终止它。

这可用于制作快速重启.sh 脚本。使用 php 进行 websocket 调用以终止服务器并从 bash 脚本调用 if,然后调用 php server.php 然后离开。