使用tcp调试工具,同时开三个客户端同时去给服务端发心跳,设置的是每个客户端1秒一次,应该是发送太快服务端处理不过来,导致上一条还没执行完成就直接执行第二条心跳了,导致第一条心跳执行一半没有服务端还没回应给客户端就执行一下一条
期望每一次都执行完成
Workerman version:3.5.31
PHP version:7.3.4
1.这不是队列,那个进程有空哪个处理(除非你只开一个进程) 2.维持连接的心跳代码不应做业务处理
嗯嗯,我现在只是用心跳来测试,业务报文里面也会出现这种问题,发送太快的话有时候会执行不完整
多个进程并发输出到终端,显示时会出现错乱。 例如 A进程
echo "===\n"; echo 1."\n"; echo 2."\n";
B进程
echo "===\n"; echo 3."\n"; echo 4."\n";
你期待的结果可能是
=== 1 2 === 3 4
但实际可能是
=== 1 === 3 2 4
因为并发输出了 并不是你说的执行一半,而是显示错乱,给人的错觉只执行一半。
我测试了一下运行一次在数据库插入一条数据,最后两次执行导致没有添加到数据库,并不像你说的那样,但你说的也没问题
应该就是 $result>0 那里的问题
好像是有点问题,是因为里面db太慢,执行不过来跳过了嘛难道
1.这不是队列,那个进程有空哪个处理(除非你只开一个进程)
2.维持连接的心跳代码不应做业务处理
嗯嗯,我现在只是用心跳来测试,业务报文里面也会出现这种问题,发送太快的话有时候会执行不完整
多个进程并发输出到终端,显示时会出现错乱。
例如 A进程
B进程
你期待的结果可能是
但实际可能是
因为并发输出了
并不是你说的执行一半,而是显示错乱,给人的错觉只执行一半。
我测试了一下运行一次在数据库插入一条数据,最后两次执行导致没有添加到数据库,并不像你说的那样,但你说的也没问题
应该就是 $result>0 那里的问题
好像是有点问题,是因为里面db太慢,执行不过来跳过了嘛难道