Добавление 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 может быть интегрирован в мой нынешний сервер?

2

Решение

Это блокирующий звонок. Вам необходимо запустить этот метод вне среды веб-сервера. Вместо этого вам нужно запустить свой скрипт в командной строке. Также вы захотите контролировать этот процесс, используя 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.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]