Php 关闭控制台后CentOS 7上的WebSocket

Php 关闭控制台后CentOS 7上的WebSocket,php,apache,websocket,Php,Apache,Websocket,当我打开控制台并编写php服务器时,phpwebsockets工作得很好。但是当我关闭会话时,WebSocket停止工作。我怎样才能一直工作?这是我的server.php文件-不复杂: use Ratchet\Server\IoServer; use Ratchet\Http\HttpServer; use Ratchet\WebSocket\WsServer; $server = IoServer::factory( new HttpServer( new WsSer

当我打开控制台并编写
php服务器时,php
websockets工作得很好。但是当我关闭会话时,WebSocket停止工作。我怎样才能一直工作?这是我的
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();
使用Ratchet\Server\IoServer;
使用Ratchet\Http\HttpServer;
使用Ratchet\WebSocket\WsServer;
$server=IoServer::工厂(
新的HttpServer(
新WsServer(
新建WebSocket()//运行();

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

安装linux屏幕工具:

yum-y安装屏幕

创建新屏幕:

screen -S SESSIONNAME
返回屏幕:

screen -r SESSIONNAME
退出屏幕:

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

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


目前,请转到screen-r SESSIONNAME查看屏幕介绍中发生的情况。

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

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

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

$ systemctl daemon-reload
$ systemctl start websockets
启动时启动服务:

$ systemctl enable websockets
停止服务器:

$ systemctl stop websockets

当您关闭控制台时,您也会关闭应用程序。使用屏幕外的屏幕使用:ctrl+A和ctrl+D。这对我有什么帮助?我不需要
屏幕外的
,但WebSocket可以工作,直到我以某种方式停止它(如服务),它需要每次都运行。无论如何:
-bash:screen:command not found
。创建屏幕介绍,让屏幕运行你的套接字,然后你可以离开屏幕并关闭会话(关闭控制台终端),你的webSocket将夜以继日地工作!我明白了,但我找到了更好的方法(对我来说)使用自定义服务,我可以在重新启动时运行该服务,它比屏幕更方便。
$ systemctl enable websockets
$ systemctl stop websockets