最近做了一个功能需要定时执行一个PHP脚本,在参考了linux的crontab一些资料以后,在php文件头部加入#!/bin/php
使用命令crontab -e进入crontab编辑模式(默认为VI编辑器)增加了一个cron,
03 20 * * * php /home/xxx/xx.php
在xx.php中简单加入了一个mail函数給自己发邮件做测试,可以收到邮件,之后就把PHP脚本放进去运行了。过了段时间,发现脚本没有运行,马上就想到了是我脚本里面require了其他PHP脚本的问题(PS:曾经问过一个哥们这个问题,他说PHP脚本里包含了其他脚本也可以运行的,鄙视他!),因为我模糊的记得曾经看到过如果包含其他脚本不能执行。废话到此,解决方法是使用shell命令加上文本浏览器去调用脚本,新建一个xx.sh文件,内容如下:
#!/bin/sh
/usr/bin/links -source http://www.yoursite.com/floder/xx.php
其中/usr/bin/links是文本浏览器所在路径,要查看文本浏览器的路径可以在终端中输入:which links。(文本浏览器除了links外,还有links2,w3m 和lynx,你的服务器上可能只装了其中一个,只要一个就可以了)http://www.yoursite.com/floder/xx.php就是你的网站域名+你的文件所在的位置。
现在终端中编辑crontab,
crontab -e
进入vi编辑器以后新建一个
03 20 * * * /bin/sh /yourdirectory/xx.sh
保存退出即可