关闭控制台后,CentOS 7上的WebSockets

时间:2017-10-16 09:04:26

标签: php apache websocket

当我打开控制台并写php server.php时,websockets运行良好。但是当我关闭会话时,websockets停止工作。我怎样才能让它一直工作?这是我的server.php文件 - 没什么复杂的:

use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new WebSocket() // <-- My class, ignore it
        )
    ),
    SERVER_PORT,
    SERVER_HOST
);

$server->run();

在CentOS 7上使用PHP 5.6运行apache 2.4.6。

2 个答案:

答案 0 :(得分:0)

为linux安装屏幕工具:

  

yum -y安装屏幕

创建新屏幕:

screen -S SESSIONNAME

返回屏幕:

screen -r SESSIONNAME

退出屏幕:

 ctrl + a + d 

当您打开屏幕时:导航到您应用的路径并启动它。 当你想出去时使用ctrl + a + d。当您想要返回时使用:screen -r SESSIONNAME。

屏幕不是100%问题的原因。如果您的应用程序停机一天,您必须检查 内存泄漏 或应用程序中的其他一些错误。

目前转到屏幕-r SESSIONNAME,看看屏幕上会发生什么。

答案 1 :(得分:0)

我找到了一种方法 - 创建自己的服务以在后台运行websockets。对我来说,维护起来更容易。以下是我的步骤(需要EPEL):

$ yum install iperf3
$ adduser wsworker -s /sbin/nologin
$ vi /etc/systemd/system/websockets.service

然后插入内容(将ExecStart更改为您自己的内容):

[Unit]
Description=WebSockets Service
After=network.target

[Service]
Type=simple
User=wsworker
ExecStart=/usr/bin/php /var/www/public/server.php
Restart=on-abort


[Install]
WantedBy=multi-user.target

重新加载systemd并启动新服务:

$ systemctl daemon-reload
$ systemctl start websockets

启动时启动服务:

$ systemctl enable websockets

停止服务器:

$ systemctl stop websockets

Original article