Я хочу запустить функцию, которая перебирает класс генератора. Функции генератора будут работать до тех пор, пока существует соединение Ratchet. Все, что мне нужно сделать, это сделать так, чтобы это произошло после выполнения метода run
:
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;
require dirname(__DIR__) . '/xxx/vendor/autoload.php';
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8180,
'0.0.0.0'
);
$server->run();
Это метод, который мне нужно запустить на сервере после его запуска:
function generatorFunction()
{
$products = r\table("tableOne")->changes()->run($conn);
foreach ($products as $product) {
yield $product['new_val'];
}
}
Раньше я вызывал функцию перед $server->run()
следующим образом:
for ( $gen = generatorFunction(); $gen->valid(); $gen->next()) {
var_dump($gen->current());
}
$server->run();
Но это не позволяет клиенту установить соединение с сервером Ratchet. Я подозреваю, что это никогда не доходит до $server->run()
, поскольку класс генератора повторяется.
Итак, теперь я хочу сначала запустить сервер, а затем вызвать этот метод генератора, чтобы он мог продолжать прослушивать изменения в rethinkdb
.
Как я могу это сделать?