我在带有 PHP 5.3 的 Windows Server 上运行 IIS。我有两个脚本;我们称它们为initiator.php 和worker.php。用户调用initiator.php,在这个脚本中定义了一个变量;我们称它为 $input。我想把这个 $input 变量传递给 worker.php,如下所示:
$oShell = new COM('Wscript.Shell');
$oShell->Run("\"C:/Program Files (x86)/PHP/v5.3/php/worker.php -a $input",0,False);
在worker.php 中,我有以下内容来获取从initiator.php 传递的$input 变量。
$aCliOpts = getopt('a:');
$input_from_initiator = $aCliOpts['a'];
这很好用。启动器.php 的 $input 变量成功传递给 worker.php,它拾取它并且启动器.php 不断地跳动。然而,worker.php 然后使用它自己的 $input_from_initiator 变量,运行它自己的一些快速代码并创建第三个变量,称为 $output_from_worker。正是这个变量,我需要initiator.php 来读取它的处理过程。这就是我要挂断电话的地方。
我已经尝试将变量从worker.php 传递回initiator.php,就像它在开始时传递的变量一样,但这不起作用。我也尝试过使用:
header('Location: initiator.php?var=value')
使用 HTTP GET 参数但无济于事。
我最后的办法是让 worker.php 将此变量的值写入磁盘,然后从磁盘读取initiator.php。由于潜在的磁盘 I/O,我讨厌这样做。速度对于这个脚本非常重要。
有没有办法两个 PHP 进程可以在内存中相互传递变量?