1

Swoole Websocket サーバーがあり、RedisPool を使用して複数の Redis 接続を管理し、メッセージを受信したときにクエリごとに 1 つを選択したいと考えています。RedisPool から接続を取得しようとすると、Swoole が「Error: Uncaught Swoole\Error: API must be called in the coroutine in @swoole-src/library/core/ConnectionPool.php:69」というエラーを出力するので、試してみました。クエリを Co\Run でカプセル化するには:

Co\run(function() use ($key, $pool) {
    go(function () use ($key, $pool) {
        $redis = $pool->get();
        $result = $redis->get($key);

        $pool->put($redis);
    });
});

次に、「警告: Swoole\Coroutine\Scheduler::start(): eventLoop は既に作成されています。Swoole\Coroutine\Scheduler を開始できません」というメッセージが表示されます。

websocket サーバーによって eventLoop が既に開始されていると思います。サーバーの eventLoop にアクセスする方法や、コルーチンを実行する別の方法はありますか?

4

0 に答える 0