将PubNub添加到聊天服务器

时间:2015-12-28 01:42:49

标签: php xampp pubnub

我希望将PubNub添加到聊天服务器,以便实时发送和接收消息。目前,服务器是用PHP构建的一系列switch-case动作。

但是,只需将实例化和订阅添加到服务器的顶部:

$pubnub = new Pubnub(
    "key",  ## PUBLISH_KEY
    "key"  ## SUBSCRIBE_KEY
);

// Subscribing to the main server channel

$pubnub->subscribe('MAIN_SERVER', function($message) {
    //var_dump($message);  ## Print Message
    return true;         ## Keep listening (return false to stop)
});

....

switch($action) 
{

    // Complete:
    case "userLogin": 
        //error_log($username,0,"error.log");
        if ($userId = authenticateUser($db, $username, $password, $gcmregid)) 
        {   
            // Then they are a user, so yes, then in app, will call the "syncWithServer" action case
            $out = json_encode(array('response' => SUCCESSFUL));

        }
        else
....

导致服务器超时:

PHP Fatal error:  Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\Server\lib\Pubnub\Clients\DefaultClient.php on line 30

如何将PubNub集成到我现在的服务器中?

1 个答案:

答案 0 :(得分:1)

PHP使用PubNub订阅循环

这是阻止通话。您需要在Web服务器环境之外运行此方法。相反,您需要在命令行中运行脚本。此外,您还希望使用upstart或类似的系统级

来监控此过程
## Process Messages
function receive_and_process($message) {
    switch($messge->action) { ... }
}

## This is BLOCKING
$pubnub->subscribe('MAIN_SERVER', function($message) {
    receive_and_process($message);
    return true;
});

您的“开始”命令为 php my-php-server.php