Tp5 think-queue执行任务时,任务数量太多导致延迟执行问题解决
示例业务逻辑代码如下: fire为实际执行, push为添加队列任务
1.单进程实际运行
开始时间: 10:45:12 结束:10:46:55 用时103秒,有延迟情况,也有后执行排前面情况;
2. 多进程测试(分别将supervior守护进程调整为2和10)
A. 守护进程数为2
有重复被两个进程执行的情况
B. 守护进程调为10
有重复被两个或多个进程执行的情况,笔两个进程时间更短,但同时重复执行率更高(基本上重复执行3次)
3. 代码调整
A. 先执行job delete,再进行执行计划,进程数为10
计划没有重复执行,同时时间也大幅缩短
但是计划总数增加到1000个之后出现多余执行情况
实测模拟 0.1 0.2 0.5秒执行时间,重复执行次数都在60-70之间, 故先delete只能减少部分情况,高并发不太适用
B. 业务逻辑做限制(已执行的话禁止在执行)
实际执行仍然有多余执行情况(实测1000,2000个没问题,3000个开始就有多余情况出现)
C. 分多队列,多个单进程进行监听
操作: push时随机推送duilie1,duilie2,duilie3...,添加多个supervior单进程监听任务
未实测,猜测不会出现多次执行情况