我想咨询下,workerman的swoole协程,能否加速物联网modbus tcp协议的开发?

bobshipwood

问题描述

以下从官网中,拷贝的例子,做些修改,在我要sleep(1)和sleep(3)处发生了协程切换,使得整个过程只需要3秒就能完成一次的请求,我想问下,如果sleep函数换成发起modbus tcp的请求(一种类似curl的请求,但是不是http协议的),会有这样的效果吗?

$worker = new Worker('http://0.0.0.0:8001');
        $worker->eventLoop = Swoole::class; // Or Swow::class or Fiber::class
        $worker->onMessage = function (TcpConnection $connection, Request $request) {
            $channel = new Channel(2);
            Coroutine::create(function () use ($channel) {
                sleep(1);
                $channel->push('Task 1 Done');
            });
            Coroutine::create(function () use ($channel) {
                sleep(3);
                $channel->push('Task 2 Done');
            });
            $result = [];
            for ($i = 0; $i < 2; $i++) {
                $result[] = $channel->pop();
            }
            $connection->send(json_encode($result)); // Response: ["Task 1 Done","Task 2 Done"]

为此你搜索到了哪些方案及不适用的原因

搜不到

135 1 0
1个回答

agaegha

不管什么协议,也是使用socket这套api实现的,肯定可以啊

🔝