php – 即使关闭SSH终端后,如何保持websocket服务器运行?

所以,我正在使用Ratchet with PHP,并且目前已将一个成功的websocket示例上传到我的服务器.

它在我转到SSH之后工作,然后只需手动运行“PHP bin / chat-server.PHP”.

我想知道的是,在商业环境中,如何让聊天服务器保持运行?

谢谢.

一个守护进程.

如果您使用的是symfony2,则可以使用Process Component.

// in your server start command
$process = new Process('/usr/bin/PHP bin/chat-server.PHP');
$process->start();
sleep(1);
if ($process->isRunning()) {
    echo "Server started.\n";
} else {
    echo $process->getErrorOutput();
}

// in your server stop command
$process = new Process('ps ax | grep bin/chat-server.PHP');
$process->run();
$output = $process->getoutput();
$lines = preg_split('/\n/',$output);
// kill everything (there can be multiple processes if they are spawned)
$stopped = False;
foreach ($lines as $line) {
    $ar = preg_split('/\s+/',trim($line));
    if (in_array('/usr/bin/PHP',$ar)
        and in_array('bin/chat-server.PHP',$ar)) {
        $pid = (int) $ar[0];
        posix_kill($pid,SIGKILL);
        $stopped = True;
    }
}
if ($stopped) {
    echo "Server stopped.\n";
} else {
    echo "Server not found. Are you sure it's running?\n";
}

如果您使用的是原生PHP,请不要担心,popen是您的朋友!

// in your server start command
_ = popen('/usr/bin/PHP bin/chat-server.PHP','r');
echo "Server started.\n";

// in your server stop command
$output = array();
exec('ps ax | grep bin/chat-server.PHP',&$output);
$lines = preg_split('/\n/',SIGKILL);
        $stopped = True;
    }
}
if ($stopped) {
    echo "Server stopped.\n";
} else {
    echo "Server not found. Are you sure it's running?\n";
}

当然还有其他有用的PHP库用于处理守护进程.谷歌搜索PHP守护进程”将给你很多指示.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...