某个网站,需要执行自己写的定时任务,需要定时执行PHP命令
例子:TP5.1 安装插件 PHP常驻内存定时器 easy-task任务
PHP常驻内存定时器
easy-task/easy-task
—— EasyTask: PHP常驻内存多进程任务管理器,支持定时任务(PHP resident memory multi-process task manager, supports timing tasks)
easy-task任务设置好定时执行任务后会每天自动执行事务,但是总是执行一段时间后,发现在执行的事务没有执行,
一、猜测:
可能执行的事务有太多数据,进程不能按时关闭,卡内存,过一段时间慢慢过多,就造成了执行不了。
二、解决的办法:
测试:发现每次用shell命令重启这些定时任务,重启那段时间定时任务都正常,过段时间就又不行
解决办法思路:如果每天都自动把这些定时重启一次(相当用shell命令重启),那就解决了吗?
三、设置
3.1 运行定时任务
查看crontab定时任务列表:cat /var/spool/cron/root
查看crontab定时任务位置:cd /var/spool/cron/
- 09 07 * * * cd /data/wwwroot/default/www.xxx.cn;php think timedtasks stop force >> /data/wwwroot/default/www.xxx.cn/runtime/Task/Log/1.txt 2>&1
- 10 07 * * * cd /data/wwwroot/default/www.xxx.cn;php think timedtasks start >> /data/wwwroot/default/www.xxx.cn/runtime/Task/Log/1.txt 2>&1
/data/wwwroot/default/www.xxx.cn :自己网站根目录,是绝对路径,不是相对路径
easy-task任务 执行命令
php think task start 启动命令
php think task status 查询命令
php think task stop 关闭命令
php think task stop force 强制关闭命令
/data/wwwroot/default/www.xxx.cn/runtime/Task/Log/1.txt 记录上面两个命令的日志,看看运行情况
错误:/bin/sh: php: command not found
如果/Task/Log/1.txt中有这个错误:说明没有系统PATH没有配置或配置不全
解决方法:
- ln -s /usr/local/php56/bin/php /usr/bin/php
-
- 或
-
- ln -s /usr/local/php/bin/php /usr/bin/php
/usr/local/php56/bin/php 是服务器PHP安装路径,这些情况多数是服务器安装多个PHP版本
ln -s /usr/local/php/bin/php /usr/bin/php 这种是服务器只安装了一个PHP版本
查看easy-task任务日志路径:/data/wwwroot/default/www.xxx.cn/runtime/Task/Log
这里参考:linux下无法执行PHP命令,错误 php: command not found_wang6168的博客-CSDN博客
其它相关:
CentOS Nginx crontab 定时任务 每小时备份一次命令 (删除5天以前某个后缀的文件)_我是高手高手高高手的博客-CSDN博客
linux CentOS Nginx 删除/查看定时任务列表命令 crontab命令文件位置(自动备份)_我是高手高手高高手的博客-CSDN博客_linux 查看定时任务