我们在实时服务器上运行许多php脚本,这些脚本使用来自命令行的参数。 现在我需要在其中一些crons中添加一个参数,它将告诉我环境,然后选择服务器(slave,master)。这些服务器选择是一个中央库代码。
我不想更改当前脚本中访问的参数。 所以只有选项是在最后添加这个新的环境参数。但在这种情况下,有些crons不会包含这个环境参数。所以我不能盲目地访问库中的最后一个参数。 所以我想为此使用选项。
所以我的脚本将在终端中运行 php myscript.php arg1 arg2 -env slave
但是在这种情况下我无法在php中获得选项。可能是因为它直接提供了参数和选项的混合..
该怎么办?有帮助吗?
答案 0 :(得分: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
}
可能有更好的选择。
答案 1 :(得分:0)
在调用脚本时尝试在参数之前移动选项。
php myscript.php -e slave arg1 arg2
或
php myscript.php --env slave arg1 arg2
注意:这将更改$argv
数组作为选项,其值将首先显示在$argv
数组中,并将其他参数移至更高的索引。