用php编写的服务停止工作



我已经编写了一个充当消息服务器的php脚本。消息服务器使用websocket在多个移动应用程序之间建立连接,以便在不同的应用程序之间提供实时聊天功能。

我的messageserver.php脚本的主要布局如下:

#!/usr/bin/env php
<?php
class chatServer extends WebSocketServer {
var $usersCache = array();
var $userConnectionIds = array();
var $dbconnect;
public function setDatabaseConnection($connect) {
    $this->dbconnect = $connect;
}
private function addMessage($convId, $from, $to, $message, $read) {
    ..
}
protected function process ($user, $message) {
    $parsedMessage = json_decode($message, true);
    switch($parsedMessage["type"]) {
        case "handshake" :
            $this->usersCache[$parsedMessage["userId"]] = $user;
            $this->userConnectionIds[$user->id] = $parsedMessage["userId"];
            break;
        case "chatMessage" :
            $receivingUser = $this->usersCache[$parsedMessage["to"]];
            if ($receivingUser != null) {
                $returnValue = $this->send($receivingUser, json_encode($parsedMessage));
            }
    }
}
protected function connected ($user) {
}
protected function closed ($user) {
    $userId = $this->userConnectionIds[$user->id];
    unset($this->userConnectionIds[$user->id]);
    unset($this->usersCache[$userId]);
    var_dump($this->usersCache);
}
}
$chatServer = new chatServer("0.0.0.0","36092");
global $connect;
try {
    $chatServer->setDatabaseConnection($connect);
    $chatServer->run();
}
catch (Exception $e) {
    $echo->stdout($e->getMessage());
}

为了让messageserver.php在我的服务器上运行,我使用

nohup php messageServer.php > php.log 2>&1 &

这应该允许服务继续运行,即使我关闭了与服务器的ssh连接,情况确实如此。现在我的问题是,这个设置按预期工作,没有任何问题。然而,过了一段时间,php脚本就停止运行了,根本没有任何消息。php.log文件不包含任何类型的错误或终止消息。有人知道这里会发生什么吗?有什么方法可以追踪服务停止运行的原因吗?谢谢

首先,不要在PHP进程中使用nohup。如果你想让它活着?使用屏幕。如前所述,在整个代码中添加一些调试语句。

使用screen的另一个优点是:您可以重新附加到会话(screen-r)并查看输出/任何内容。所以,这样做:屏幕。然后运行你的程序php-whatever.php。然后关闭你的连接,继续你的路。什么时候坏了?登录并执行"screen-r"重新连接,看看它弄脏裤子的原因。

另外,你为什么要用PHP写这个??:)我的意思是,我并不反对PHP。我经常使用它,我非常喜欢它。但每种语言都只是工具箱里的一个工具,我当然不会用锯子锯倒整棵树。如果Node.JS将是一个规模较小的服务器,请使用它;如果它将拥有数十万用户,请使用C。PHP不是一种合适的语言,IMHO。

相关内容

  • 没有找到相关文章

最新更新