2014-02-06 80 views
1

我必須完成一個使用php cronjob的舊項目。內的cronjob我要檢查一個變量這樣PHP cronjob變量

defined('_CRONJOB') or die; 

這個常數可以採取不同的值,以指示工作要做:

switch(_CRONJOB){ 
//...more code 
} 

調用的cronjob時,我怎樣才能設置此變量。提前致謝。

回答

1

既然你」將使用cron來啓動您的腳本,您可以使用CLI參數並將一些值傳遞給您的腳本。爲了處理您的參數,你可以只使用簡單的方法,如:

define('_CRONJOB', $_SERVER['argv'][1]); //equal to 1-st parameter 

在這種情況下推出的將是這樣的:

/path/to/bin/php /path/to/script.php foo 

而且你_CRONJOB將等於foo

另一種更先進的方法是使用getopt()並抓住命名參數。這將更具可讀性,並且您將不能依賴參數順序(即它將首先完成)。我建議你使用這種方式。

+0

啊是的,這是一個空間。這是對的,我知道$ _GET語法似乎是錯誤的 –

+0

那麼,你不能在CLI模式下「傳遞」類似HTTP-GET URI的東西,因爲這樣的調用將被視爲文件名 –

0

取決於您的cronjob運行方式,最可能的答案是或$_SERVER['argv']

你的腳本將指向/path/to/cron/script/index.php var1 var2 var3

再次這個問題是非常依賴於服務器的設置,但是這給了一槍

編輯: 更新到正確的變量語法