У нас есть много php-скриптов, работающих на живых серверах, которые используют аргументы из командной строки.
Теперь мне нужно добавить еще один аргумент в некоторые из этих крон, который расскажет мне об окружающей среде, которая, в свою очередь, выберет сервер (slave, master). И этот выбор серверов является кодом центральной библиотеки.
Я не хочу менять аргумент, используемый в текущих сценариях.
поэтому единственный вариант — добавить этот новый аргумент среды в конце. Но в этом случае есть кроны, которые не содержат аргументов этой среды. Поэтому я не могу слепо получить доступ к последнему аргументу в библиотеке.
Поэтому я подумал использовать варианты для этого.
так что мой скрипт будет работать в терминале, как
php myscript.php arg1 arg2 -env slave
но в этом случае я не могу получить параметры в php. Может быть потому, что это сочетание аргументов, предоставленных напрямую и с параметрами ..
что делать? Любая помощь?
Первый поиск варианта (-env
) в массиве argv
получить key
из массива ($argv
) и увеличьте на 1, чтобы получить значение параметра:
if (false !== $key = array_search('-env', $argv)) {
$value = $key+1;
$env = $argv[$value]; // $env will be 'slave' now.
} else {
// do something else
}
Там могут быть некоторые лучшие варианты.
упоминается PHP, если in_array (), как получить ключ, а? хе-хе!
Попробуйте переместить опции перед аргументами при вызове скрипта.
php myscript.php -e slave arg1 arg2
или же
php myscript.php --env slave arg1 arg2
Примечание: это изменит $argv
массив в качестве опции и его значение будет отображаться первым в $argv
массив и переместить другие аргументы в более высокий индекс.