у нас много скриптов php, работающих на живых серверах, которые используют аргументы из командной строки. Теперь мне нужно добавить еще один аргумент в некоторых из этих кронов, которые расскажут мне об окружающей среде, которые, в свою очередь, выбирают сервер (подчиненный, ведущий). И этот выбор серверов является центральным библиотечным кодом.
Я не хочу изменять аргумент, доступный в текущих сценариях. поэтому только опция заключается в добавлении этого нового аргумента среды в конце. Но в этом случае есть кроны, которые не будут содержать аргументы этой среды. Поэтому я не могу слепо получить доступ к последнему аргументу в библиотеке. Поэтому я решил использовать для этого варианты.
поэтому мой скрипт будет запущен в терминале, например php myscript.php arg1 arg2 -env slave
но в этом случае я не могу получить параметры в php. Может быть, потому что это сочетание аргументов, предоставленных напрямую и с опциями.
что делать? Любая помощь?
Сначала поиск опции ( -env
) в массиве argv
получает key
от массива ( $argv
) и increment на 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
массиве и перенесет другие аргументы в более высокий индекс.