前几天遇到添加的定时任务 Task,经常会同一时间执行两次。尝试了很多办法:
1、设置进程数 count = 1,无效
2、升级 crontab 包,composer workerman/crontab ^1.0.6 ,无效
3、安 webman 定时任务文档 check 了多遍,无效
试着删除 process.php 中添加的 task handler,在服务器上的 docker 环境正常了,定时任务可以每次只执行一次,本地的 Mac 电脑上却不执行任何定时任务了。
服务器使用的 docker 镜像:
version: "3.7"
services:
data-tools:
image: krisss/docker-webman:${DOCKER_WEBMAN_VERSION:-8.2-cli-alpine}
ports:
- "${DOCKER_WEBMAN_PORT:-8790}:8787"
volumes:
- .:/app
webman 版本 1.5.16
定时任务代码怎么写的?写在什么地方的?
定时任务写在 process 目录下的 Task.php
日志输出:
代码不全,看不出设置定时任务的时机,onWorkerStart里运行的?
可能是你服务器还有一个task进程没正常关闭。ps auxf能看到进程情况
抱歉,代码没贴全:
代码是在 onWorkerStart 里运行的。
通过 ps auxf 确实查询到之前运行的一个容器在执行,感谢大佬!