以下从官网中,拷贝的例子,做些修改,在我要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"]
搜不到
不管什么协议,也是使用socket这套api实现的,肯定可以啊
顶,支持!太强大了,workeman+swoole