workerman异步,为什么会有等待?

发布于 2022-09-12 23:38:54 字数 1489 浏览 39 评论 0

workerman服务端

$task_worker = new Worker('Text://127.0.0.1:2345');
        // task进程数可以根据需要多开一些
        $task_worker->count = 100;
        $task_worker->name = 'server_worker';
        $task_worker->onMessage = function($connection, $task_data)
        {
            $task_data = json_decode($task_data, true);
            $type = $task_data['type'];
            if($type == "check_domain"){
                echo $task_data['domain'] . "\n";
                if($task_data['key'] == 0){
                    sleep(5);
                }
                $connection->send("End");
            }else{
                $connection->send("未做任何处理");
            }
        };
        Worker::runAll();

workerman调用

for ($x=0; $x<= 50; $x++) {
   $task_data['key'] = $x;
   $task_connection = new AsyncTcpConnection('Text://127.0.0.1:2345');
   $task_connection->send(json_encode($task_data));

    $task_connection->onMessage = function($task_connection, $task_result)use($ws_connection)
                    {
                        dump($task_result);
                        $task_connection->close();  // 获得结果后记得关闭异步连接
                        // 通知对应的websocket客户端任务完成
                        $ws_connection->send('task complete');
                    };
                    $task_connection->connect();
                }

既然AsyncTcpConnection是异步的,即使写了sleep,curl在调用的时候,也不应该用等待啊

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文