问题描述 学习协程有多天,但感觉在wokrerman中,协程其实就是对「异步事件」的语法糖封装?(网络io和磁盘io) 不知道我的理解正确否? 为此你搜索到了哪些方案及不适用的原因 没有...
问题描述 如下图,能正常的到$aa数组, $barrier = Barrier::create(); $aa = []; for ($i=1; $i<5; $i++) { Coroutine::create(function () use ($barrier, $i, &$aa) { ...
问题描述 原本的代码,do中用到的modbus tcp链接(一种底层3次tcp握手才能在上面跑的协议)。其中foreach下面会每一次迭代会同步执行代码,包括建立modbus tcp链接(因为不同的服务端ip)。 我想问的是,这里面用协程会不会提升并发? $plcs = []; foreach ($devicePlcs as $devicePlc) { $plcs[] = $this->do($devi...
问题描述 1 在Timer内创建协程,是否可行?假设Timer已经轮询到期(示例中2.5秒),协程内的执行是否会继续(假设2.5秒内都无法执行完毕这个协程?) $timer_id = Timer::add(2.5, function() { Coroutine::create(function () { $this->coroutine() } }); 2 在协程内创建Time...
问题描述 假设在onWorkerStart里面创建了一个workerman的mqtt链接,底下所有协程用他来发送数据是否可行? $worker->onWorkerStart = function ($worker) { try { $mqttClient = new \Workerman\Mqtt\Client(env('MQTT_URL'), ['cli...
问题描述 我最近在搞个plc(modbus-tcp)通讯,其中需要用到协程处理.我想问个问题,就是协程会自动销毁其变量吗 $worker2->onWorkerStart = function (TcpConnection $connection, Request $request) { Coroutine::create(function () { $a = 1; $b =...
问题描述 ## 假定用swoole驱动 $server = new worker();\ $server->onMessage( function(TcpConnection $connection, $data) { Timer::add( function (1) { ...
问题描述 如下是关于gataway的介绍, https://www.workerman.net/doc/gateway-worker/principle.html 我的问题是: 1 business进程拿到gateway进程的链接后,就建立链接,我的理解是建立一个tcp的长链接。gateway是tcp的服务端,business是tcp的客户端,我的理解正确吗? 2 client1和client7是怎么通讯的?假设cl...
问题描述 以下从官网中,拷贝的例子,做些修改,在我要sleep(1)和sleep(3)处发生了协程切换,使得整个过程只需要3秒就能完成一次的请求,我想问下,如果sleep函数换成发起modbus tcp的请求(一种类似curl的请求,但是不是http协议的),会有这样的效果吗? $worker = new Worker('http://0.0.0.0:8001'); $worker->event...
问题描述 官网的例子中,onmessage应该是个主协程的概念吧?然后在开启两个子协程。我想问下流程: 1 在子协程遇到sleep的时候,就直接运行到主协程那,主协程在遇到$result[] = $channel->pop();就阻塞, 2 等待子协程push的时候,主协程就接着运行$result[] = $channel->pop();,然后再次循环,再次遇到阻塞, 3 直到第2个子协程运行完毕,主协程...
问题描述 <?php use Workerman\Connection\TcpConnection; use Workerman\Coroutine\Context; use Workerman\Coroutine; use Workerman\Coroutine\Pool; use Workerman\Events\Swoole; use Workerman\Protocols\Http\Request; u...
问题描述 要使用swoole驱动的话,除了安装event扩展外,一定要安装swoole扩展吗? 为此你搜索到了哪些方案及不适用的原因 没有...
问题描述 上诉是协程的用法: $worker1 = new Worker('http://0.0.0.0:8001'); $worker1->eventLoop = Swoole::class; // 使用Swoole协程 $worker1->onMessage = function (TcpConnection $connection, Request $request) { Coroutine...
问题描述 业务需要定时去PLC获取数据,为此我在一个进程内,定义了多个定时器 foreach ($devicePlcs as $devicePlc) { // 如果不存在,则表示新增,需创建timer数组 if (!isset($this->timers[$devicePlc->id])) { $timer_id = Tim...
问题描述 以下的代码,我写在onworkerstart里面,每隔10秒中向redis的队列写数据,但是为啥while(true)的部分没有执行呢?如果去掉while(true),那只能执行1次,不能执行多次? protected function loop() { Timer::add(10, function () { $data['DEVICE_ID'] =...
问题描述 大概意思就是想要个集群,现在不知道那个connection对象能否共享给其他worekerman用? 为此你搜索到了哪些方案及不适用的原因 找不到...
问题描述 我想问的问题是,假设每次发的包都包含有fromUserId,content,toUserId这些字段, $userIdToConnection[$fromUserId] = $connection; 那这句话后,他每次的$connection都是一样的吗? $worker->onMessage = function ($connection, $data) { global $userId...
问题描述 $worker = new Worker(); $worker->count = 4; $worker->onWorkerStart = function ($worker) { try { switch ($worker->id) { case 0: ...