2009-07-31 197 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