thinkphp5+linux定时任务crontab
tp5自定义指令
tp5项目中我们用自定义指令的方式,详细参考文档:ThinkPHP5.1完全开发手册( https://www.kancloud.cn/manual/thinkphp5_1/354146)。
比如我们自定义的命令为 test ,项目开发完后我们通过shell命令:php think test
也可以直接带目录结构的方式运行命令:php /www/wwwroot/project/think test
(windows时需要切换到项目根目录下)
如果无权限可以:sudo su -c 'php /www/wwwroot/project/think test'
比如传两个参数一个是日期一个是条数:sudo su -c 'php /www/wwwroot/project/think test 2023-08-09 10'
linux定时任务
方式一:linux定时任务执行php自定义指令
1、打开服务器的shell命令区,输入:crontab -e
2、然后回车,按一下a垫进入输入状态,把一下代码编辑进去:
0 06 * * * sudo su -c 'php /www/wwwroot/project/think test $(date -d "-1 day" %Y-%m-%d) 100'
$(date -d "-1 day" %Y-%m-%d) 是通过系统获取了前一天的日期,以上任务是每天的六点整运行一次,crontab时间设置请参考:https://blog.51cto.com/u_12855930/5589448
3、按Esc键退出编辑输入 :wq 回车进行保存
4、输入 crontab -l 查看编辑的定时任务
方式二:也可以 把命令放到sh文件里,通过定时任务执行命令文件
1、打开服务器的shell命令区,输入:crontab -e
2、然后回车,按一下a垫进入输入状态,把一下代码编辑进去:
00 06 * * * /www/server/cron/test.sh >> /www/server/cron/test.log 2>&1
3、按Esc键退出编辑输入 :wq 回车进行保存
4、输入 crontab -l 查看编辑的定时任务
5、把test.sh文件里边写代码: sudo su -c 'php /www/wwwroot/project/think test $(date -d "-1 day" %Y-%m-%d) 100'
把test.sh文件放到 /www/server/cron/ 目录下,并赋予访问权限。
一般定时任务执行日志在以下目录下:/var/log ,cron或者其他相关文件