2009-07-31 229 views
6

我在服务器上使用Ubuntu和我使用的腻子访问。我想为我的php网站创建cronjobs。我怎样才能做到这一点?cron作业PHP

+0

属于对serverfault。 – hobodave 2009-07-31 06:34:16

+0

另请不要多次提问您的问题,如果您意识到自己没有正确解释自己,请点击您问题上的编辑链接并添加更多信息。 – dimo414 2009-08-03 22:06:24

回答

15

如果你的意思是你想你的PHP的网站做一些常规任务,有两种可能的方式。

1)您使用cron定期拉开一定的页面。您可以使用基于文本的浏览器来完成此操作,例如猞猁。你拉你的脚本是这样的:

* * * * * /usr/bin/lynx http://yourhost.com/cron.php -dump > /dev/null

(这将调用它的每一分钟,你可以建立自己的应用程序中安排的方式。)

2)您使用命令行调用脚本PHP解释:

* * * * * /usr/bin/php /path/to/cron.php > /dev/null

一般的解决方案二是更好的。但是,您需要访问该框。如果您无法在主机上安装cron,则解决方案中的cron可以从其他主机触发。

另外注意使用PHP的命令行版本的一个常见问题的。在debian(和其他可能的系统)上,可能会有单独的php.ini文件用于cgi,cli和mod_php。如果你已经定制你的配置,请确保命令行php使用正确的配置。您可以使用测试:

/usr/bin/php -i | less

在回应笛膜评论我做了一些基准。我打电话给一个简单的本地PHP脚本(这只是回声 “测试”),1000次,猞猁,wget和PHP-CLI:

kbsilver:temp kbeyer$ time . wget.sh 

real 0m14.223s 
user 0m2.906s 
sys 0m6.335s 

(Command: wget -O /dev/null "localhost/test.php"; 2> /dev/null) 

kbsilver:temp kbeyer$ time . lynx.sh 

real 0m26.511s 
user 0m5.789s 
sys 0m9.467s 

(Command: lynx -dump "localhost/test.php"; > /dev/null) 




kbsilver:temp kbeyer$ time . php_cli.sh 

real 0m54.617s 
user 0m28.704s 
sys 0m18.403s 

(Command: /opt/local/bin/php /www/htdocs/test.php > /dev/null) 

服务器为lighttpdphp(fastcgi)与APC(在Mac OS X)。

事实证明,确实wget的是关于速度工作的最佳工具。

所以php-cli的结果并不像其他方法重复一个已经运行的php线程和操作码缓存那样令人惊讶。

所以使用PHP-CLI的唯一真正的优势是安全性脚本将无法从外面,你可以把它放在文档根目录之外。

(这个测试显然不是100%准确,但差异在我看来相当明显)

1

我asssuming要备份你的PHP的网站?使用编辑crontab:

crontab -e 

这将启动VI的一个实例,在其中您可以编辑crontab,按用于插入模式。然后你需要把在信息的时候cron项运行和命令当时运行,如:

30 10 * * * tar -zcvf ./myphpsite.tar.gz /var/www/phpsite 

所以上面的命令将焦油在/ var/WWW/phpsite gzip压缩您的phpsite在每天晚上10:30。退出并退出VI与:WQ

见本作进一步参考:

http://www.adminschoice.com/docs/crontab.htm