Cron在Ubuntu上为php工作

时间:2009-07-31 06:19:53

标签: php ubuntu cron

我在服务器上使用Ubuntu而我正在使用Putty访问。我想为我的php网站创建cronjobs。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:15)

如果你的意思是你希望你的php网站做一些常规任务,有两种可能的方法。

1)您使用cron定期拉出某个页面。您可以使用基于文本的浏览器执行此操作,例如猞猁。你像这样拉你的脚本:

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

(这将每分钟调用一次。这样你就可以在你的应用程序中建立自己的日程表)

2)使用命令行php interpreter调用脚本:

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

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

使用命令行版本的php也要注意常见的陷阱。在debian(以及可能的其他系统)上,可能存在用于cgi,cli和mod_php的单独的php.ini文件。如果您已自定义配置,请确保命令行php使用正确的配置。你可以用以下方法测试:

/usr/bin/php -i | less

在回应dimo的评论时,我做了一些基准测试。我用lynx,wget和php-cli调用了一个简单的本地php脚本(只是echos“test”)1000次:

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的唯一真正优势是安全性,因为脚本将无法从外部获取,因为您可以将其放在docroot之外。

(此测试显然不是100%准确,但我认为差异非常明显)

答案 1 :(得分:1)

我很想你要备份你的PHP网站?使用以下命令编辑crontab:

crontab -e

这将启动一个vi实例,您可以在其中编辑crontab,按 i 进行插入模式。然后,您需要输入cron条目运行时的信息以及当时运行的命令,例如:

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

所以上面的命令将每天晚上10:30在/ var / www / phpsite中对你的phpsite进行gzip。退出并使用:wq

退出vi

请参阅此内容以获取进一步参考:

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