[备忘]在Linux下Ubuntu系统中用定时任务执行PHP文件
之前的写得有点笼统,这里重新优化一下,后续继续更新完善。
1、 先确认PHP可执行文件目录(暂时不管它),一般为:
/usr/bin/php
2、确认要执行的文件必须为可用读写权限,我直接设置的0777
3、编辑如下命令
#用crontab -e命令打开任务编辑,如下:
*/5 * * * * curl 'http://sss.test.com/OA/OaNotice/index' //每5分钟定时发起一个请求
*/1 * * * * cd /www/web/www.ss.com;git pull // 每分钟更新一次代码
*/1 * * * * chown -R www-data:www-data /www/web/ //每分钟删除一次
*/1 * * * * /www/web/abc.playone.cn/task/order_warn_stask.php//每分钟执行PHP文件
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