3

如何将变量传递给 Windows 任务调度程序中的 php 脚本?

在“操作”的任务计划程序中,我输入:

程序/脚本: C:\php\php.exe

论据 C:\scripts\myscript.php?var1=1&var2=2

?var1=1&var2=2未传递给任务调度程序中的 php 脚本。如果我在浏览器中使用 vars 调用脚本,则变量会正确传递给脚本。

编辑 1

为了更好地理解答案

在带有 GET ich 的脚本中,将数据获取为:

$varB = $_GET['B'];
$varC = $_GET['C'];
$varA = $_GET['A'];

使用 URL,我将其称为

?B=bbb&C=ccc&A=aaa

如果我用 argv 来做这个例子,这个例子会是什么样子?

4

3 回答 3

5

您不能在命令行上执行此操作$_GET$_POST, 等都是从 Web 服务器构建的。

可以做的是使用正确的命令行参数,例如:

C:\php\php.exe C:\scripts\myscript.php 1 2 "arg with space"

并通过以下方式访问它们$argv

$var1 = $argv[1]; // 1
$var2 = $argv[2]; // 2
$var3 = $argv[3]; // arg with space

为了清楚起见,$argv[0]始终是脚本的名称。

编辑:为了清楚起见$argc,包含传递的参数数量。

于 2013-09-20T16:34:34.083 回答
1

您可以将如下参数传递给您的 PHP 脚本:

C:\Program Files\PHP\php.exe C:\scripts\script.php arg1 arg2

在 script.php 中,您可以使用$argv如下方式访问它们:

for ($i = 0; $i < count($argv); $i++) {
    echo "$i: {$argv[$i]}\n";
}
于 2013-09-20T16:34:27.433 回答
0

如果你有 php-cgi,你可以尝试类似:

\xampp\php\php-cgi \scripts\myscript.php -- var1=1&var2=2
于 2013-09-20T16:39:50.530 回答