Отправка вывода демона через сокет

Я создаю Twitter-клиент, и мне нужно обрабатывать твиты, приходящие от каждого потоковый процессы (начались с Symfony’s Процесс составная часть). у меня есть сервер веб-сокетов работает в фоновом режиме, который работает отлично.

Моя проблема в том, что я не знаю, как мне получить данные от этих процессов и передать их клиенту через сокет. Чтобы продолжать проверять чтение вывода, мне нужно создать цикл while для него, но это помешает другим пользователям запустить свой поток, потому что сервер сокетов застрянет в этом цикле.

Если возможно, я хочу избежать использования очередей БД.

Сервер, запущенный из терминала:

class StreamServer extends \WebSocketServer
{
/**
*
* Called immediately when the data is recieved.
*
* @param $user
* @param $message
*/
protected function process($user, $message)
{
var_dump($user);
}

/**
* Called after the handshake response is sent to the client.
*
* @param $user
*/
protected function connected($user)
{
$streamer = new Process('php Streamer.php');
$streamer->setTimeout(null);
$streamer->start();

$this->send($user, 'tweets');
}

/**
* Called after the connection is closed.
*
* @param $user
*/
protected function closed($user)
{
$this->disconnect($user->socket);
}
}

$echo = new StreamServer("127.0.0.1", "9000");

try {
$echo->run();
} catch (Exception $e) {
$echo->stdout($e->getMessage());
}

Streamer:

class Streamer
{
public function run()
{
//        $this->user = $user;
echo 'hello';


$config = [
'oauth' => [
'consumer_key'    => '**',
'consumer_secret' => '**',
'token'           => '**',
'token_secret'    => '**',
],
];

$floodgate = Floodgate::create($config);

$handler = function ($message)
{
var_export($message);
};

$generator = function ()
{
return [];
};

$floodgate->user($handler, $generator);
}
}

$stream = new Streamer();
$stream->run();

1

Решение

Я нашел решение под названием ReactPHP & Ratchet.

0

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

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