2012-10-17 40 views
5

我一直在想,wget [參數],curl [參數]和php [參數]在創建cron作業時是否有區別?wget,curl和php的cronjobs

如果我有一個腳本「cron-00-00.php」,我需要運行它,上面提到的每一個會怎麼做?

0 0 * * * php -q /your_abolute_path/includes/php/cron/cron-00-00.php >/dev/null 2>&1 
0 0 * * * wget -O - -q -t 1 http://your_domain_com/includes/php/cron/cron-00-00.php >/dev/null 2>&1 
0 0 * * * curl http://your_domain_com/includes/php/cron/cron-00-00.php 

或者它是可選的使用任何一個(取決於最適合我的)?

我目前有這樣的想法,他們3有不同的功能。請糾正我的觀念。

+1

是的,有區別。然而關於你特別想知道的是什麼?因爲在你的情況下,可能沒有任何區別。除此之外,如果你可以在CLI中執行你的腳本,我寧願不要像Wget和Curl那樣運行HTTP請求。 – hakre

+2

主要區別在於,curl + wget方法(本質上相同)將在'$ _SERVER'中填充HTTP標頭。命令行invokation不會。 – Leigh

+2

除了@Leigh評論,curl + wget與apache用戶一起運行,php cli與cron用戶一起運行。 – m4t1t0

回答

9

直接運行PHP是最簡單的選擇。它不佔用您的apache(或其他網絡服務器)實例上的網絡插槽。它也繞過了與旨在保護您的計算機免受惡意第三方攻擊的網絡服務器相關的限制。但是,運行PHP命令行版本的環境稍有不同,可能足以防止寫得不好的腳本正常運行。此外,一些網絡服務器在Apache的進程空間內運行PHP作爲DSO模塊並使用Apache的用戶權限。這可能會影響你的結果(也許積極或消極)。

在剩下的兩個選項中,curl似乎比wget稍微更廣泛地部署,所以這將是我的第二選擇,儘管它們大致相等。