2014-09-25 50 views
1

我們有許多php腳本運行在使用命令行參數的活動服務器上。 現在我需要在一些這些cron中添加一個參數,它們會告訴我有關環境的信息,然後依次選擇服務器(從服務器,主服務器)。這種服務器的選擇是一箇中央庫代碼。如何通過命令行參數在php中訪問argv和選項

我不想更改在當前腳本中訪問的參數。 所以唯一的選擇是在最後添加這個新的環境參數。但在這種情況下,有crons不會包含此環境參數。所以我不能盲目地訪問庫中的最後一個參數。 所以我想用這個選項。

所以我的腳本將在終端上運行一樣 PHP myscript.php ARG1 ARG2 -env從

但在這種情況下,我不能讓在PHP選項。可能是因爲混合其他直接提供的參數與選項..

該怎麼辦?任何幫助?

+0

你能提供你嘗試過的例子嗎?並特別詳細說明這句話:「但在這種情況下,我不能在PHP中獲得選項。可能是因爲它混合直接提供的參數和選項..」。 – Knossos 2014-09-25 09:18:42

回答

1

argv陣列中的選項(-env)得到陣列key()和遞增1獲得期權的價值首先搜索:

if (false !== $key = array_search('-env', $argv)) { 
    $value = $key+1; 
    $env = $argv[$value]; // $env will be 'slave' now. 
} else { 
    // do something else 
} 

可能有一些更好的選擇。

簡稱PHP if in_array() how to get the key as well?呵呵!

+0

我正在尋找一些具體的解決方案。這更多的是黑客。 在這種情況下,如果我想訪問env的值。我需要再次做一個黑客來提取子字符串 – 2014-09-25 09:07:56

0

嘗試在調用腳本時在參數前面移動選項。

php myscript.php -e slave arg1 arg2 

php myscript.php --env slave arg1 arg2 

注意:這將改變數組作爲選項,它的價值將在陣列第一顯示和移動其他參數較高的指數。