[备忘]在Linux Ubuntu系统中用crontab定时任务执行PHP文件、url、拉取代码等

27 篇文章 0 订阅
20 篇文章 0 订阅

linux Ubuntu系统中用定时任务crontab执行文件,url,拉取代码

定时任务是个好东西啊,配合php简直太舒服了。

因为php没有定时任务这一说,php在代码里可以实现伪定时任务,但终究不是完美选择。

与Linux crontab结合就很好的达到定时任务效果。

之前的写得有点笼统,这里重新优化一下,后续继续更新完善。

1、 先确认PHP可执行文件目录(暂时不管它),一般为:

/usr/bin/php

2、确认要执行的文件必须为可用读写权限,我直接设置的0777

3、编辑如下命令(一般来说直接到这一步操作就可以了)

#用crontab -e命令打开任务编辑,如下:

# 每5分钟定时发起一个请求
*/5 * * * * curl 'http://sss.test.com/OA/OaNotice/index'   

# 每分钟更新一次代码
*/1 * * * * cd /www/web/www.ss.com;git pull 

# 每分钟删除一次文件夹
*/1 * * * * chown -R www-data:www-data /www/web/ 

# 每分钟执行PHP文件
*/1 * * * * /www/web/abc.playone.cn/task/order_warn_stask.php

其它例子:

执行时间格式
每分钟定时执行一次* * * * *
每小时定时执行一次0 * * * *
每天定时执行一次0 0 * * *
每周定时执行一次0 0 * * 0
每月定时执行一次0 0 1 * *
每月最后一天定时执行一次0 0 L * *
每年定时执行一次0 0 1 1 *

4、然后保存重启(一般来说是自动重启的,编辑并保存推出就可以了)。
提示:
启动:sudo /etc/init.d/cron start  关闭:sudo /etc/init.d/cron stop
重启:sudo /etc/init.d/cron restart  重新载入配置:sudo /etc/init.d/cron reload
可以用ps aux | grep cron命令查看cron是否已启动

5、调试(非必须,但遇到问题可以尝试去检查

确认/usr/bin/php是否为PHP安装目录,一般是,但是确认起来很麻烦!(先确认其它情况吧)

确认要执行的PHP文件路径是否与任务文件中写的一致;

确认要执行的PHP文件代码是否错误,因为报错之后不会有提示;

确认要执行的文件是否具有读写权限;

可在命令窗口中输入命令直接访问任务文件中要访问的PHP文件;

例如:

php /var/www/html/task/realized_cash_task.php

看输出结果:

PHP Fatal error:  Uncaught Error: Call to undefined function log_to_write_txt() in /var/www/html/task/realized_cash_task.php:10
Stack trace:
#0 {main}
  thrown in /var/www/html/task/realized_cash_task.php on line 10

 这里报错了。解决错误后再次执行:

看输出结果:

这里红框处是没有错误信息的。表示执行成功。

然后再等待任务是否自动执行。

如果这样都不成功,那说明可能是第1步的问题。

END

================【再次完善】=================

我按照上面的步骤在新的Ubuntu环境下执行不生效!

我的调试步骤:

1、在crontab任务列表中改一下写法(crontab -e 打开任务列表):

*/1 * * * * /var/www/html/task/realized_cash_task.php >> /var/whlog.txt

说明:意思是执行这个PHP文件同时把执行结果写在/var/whlog.txt中,这路径随便你自己写,只要能找到就行。
 

2、按照上面改完测试:

Exception: Zend Extension /var/www/html/task/realized_cash_task.php does not exist

显示这个,大概意思就是不支持执行PHP,因为Zend代表PHPZend引擎。

3、还是第1步的问题,解决它:

OK!经过一番冥思苦想加上询问运维同志,得出结论就是在任务列表中/var/www/html/task/realized_cash_task.php的/var前面加上php就可以了,php后面要加空格。(还是不确定是不是第一步的问题,肯定有关系,加上php就行了,继续写代码)

完整代码:

*/1 * * * * php /var/www/html/task/realized_cash_task.php >> /var/whlog.txt

再次重启,运行成功!

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SDL大华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值