Easyswoole 3.x 中的swoole coroutine 報錯與修復

錯誤提示:Uncaught Swoole\Error: API must be called in the coroutine in /mnt/d/Zdtvr/Projects/BD/ZDT019/WebApp/trunk/src/vendor/easyswoole/task/src/UnixClient.php:55

修復文件:src\vendor\easyswoole\task\src\Task.php

方法:

private function sendAndRecv(Package $package, int $id, float $timeout = null) {
        go(function() use ($package, $id, $timeout) {
            if ($timeout === null) {
                $timeout = $this->config->getTimeout();
            }

            $client = new UnixClient($this->idToUnixName($id));
            $client->send(Protocol::pack(\Opis\Closure\serialize($package)));
            $ret = $client->recv($timeout);
            $client->close();
            if (!empty($ret)) {
                return \Opis\Closure\unserialize(Protocol::unpack($ret));
            } else {
                return null;
            }
        });
    }

我猜想原因是沒有做協程的包裝,故而出錯,修復後沒再出現問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章