请教workerman5.1版本协程问题

彭彭

问题描述

这里写问题描述

在worker类文件中,只有onWorkerstart回调里调用Coroutine::create($callback);创建了协程,其他onMessage,onConnect,onClose方法并未看见创建协程来执行,这是不是与文档里的注意事项不符。谢谢社区大佬,答疑解惑,谢谢!!!祝大家端午安康!!!
public function run(): void
    {
        $this->listen();

        if (!$this->onWorkerStart) {
            return;
        }

        // Try to emit onWorkerStart callback.
        $callback = function() {
            try {
                ($this->onWorkerStart)($this);
            } catch (Throwable $e) {
                // Avoid rapid infinite loop exit.
                sleep(1);
                static::stopAll(250, $e);
            }
        };

        switch (Worker::$eventLoopClass) {
            case Swoole::class:
            case Swow::class:
            case Fiber::class:
                Coroutine::create($callback);
                break;
            default:
                (new \Fiber($callback))->start();
        }
    }
75 1 0
1个回答

onMessage,onConnect,onClose等协程创建是在 Events/Swoole.php Events/Swow.php Events/Fiber.php 中完成的。
onWorkerStart不归Events管,所以单独手动创建了一个协程去执行。

🔝