как получить доступ к argv и опции вместе в php через аргументы командной строки

У нас есть много php-скриптов, работающих на живых серверах, которые используют аргументы из командной строки.
Теперь мне нужно добавить еще один аргумент в некоторые из этих крон, который расскажет мне об окружающей среде, которая, в свою очередь, выберет сервер (slave, master). И этот выбор серверов является кодом центральной библиотеки.

Я не хочу менять аргумент, используемый в текущих сценариях.
поэтому единственный вариант — добавить этот новый аргумент среды в конце. Но в этом случае есть кроны, которые не содержат аргументов этой среды. Поэтому я не могу слепо получить доступ к последнему аргументу в библиотеке.
Поэтому я подумал использовать варианты для этого.

так что мой скрипт будет работать в терминале, как
php myscript.php arg1 arg2 -env slave

но в этом случае я не могу получить параметры в php. Может быть потому, что это сочетание аргументов, предоставленных напрямую и с параметрами ..

что делать? Любая помощь?

1

Решение

Первый поиск варианта (-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 (), как получить ключ, а? хе-хе!

1

Другие решения

Попробуйте переместить опции перед аргументами при вызове скрипта.

 php myscript.php -e slave arg1 arg2

или же

php myscript.php --env slave arg1 arg2

Примечание: это изменит $argv массив в качестве опции и его значение будет отображаться первым в $argv массив и переместить другие аргументы в более высокий индекс.

0