最近在做一个项目,商城秒杀,用户抢到订单但是没有支付,超时后订单关闭,回滚库存。写了定时任务,手动执行没问题,定时器查看了也再跑,可是就是没有执行写好的任务。百度了很多 ,不是说权限问题,就是环境变量问题,最后发现都不是。然后觉得这么找问题很乱,就一步一步排查。
首先看,crontab任务有没有运行,相关命令如下:
service crond status
如果显示running,则正在运行,否则按如下命令操作:
crontab服务启动与关闭。
/etc/init.d/crond stop --关闭服务
/etc/init.d/crond start --启动服务
/etc/init.d/crond restart --重启服务
/etc/init.d/crond reload --重新载入配置
其他相关命令:
crontab
–e 编辑
crontab -l 显示所有任务
crontab -r 删除任务
tail -f /var/log/cron 查看正在执行的定时任务
点击 i 键,进入编辑状态
输入要执行的命令:如上 * * * * * /www/......./filename.sh;
按ESC键,然后输入:wq保存退即可
注意:执行的脚本文件一定要给777权限(非常重要)
2.修改application/command.php内容,加入上述的定时器内容
1 <?php 2 return [ 3 'application\command\Test', // 加入需要cmd运行的PHP文件 4 ];
主要还是参考了这篇文章:https://www.cnblogs.com/seizemiss/p/9467558.html