0

我在带有 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 进程可以在内存中相互传递变量?

4

3 回答 3

0

感谢您的帮助,尽管我最终做了一些与我原来的问题有点不同的事情。我试图运行不同的 cURL 请求。curl_multi_exec() 最终对我很有用。

于 2013-01-02T22:42:12.837 回答
0

查看file_get_contents() http://php.net/file_get_contents,您可以将 URL 传递给它。所以你可以像这样使用查询字符串:

 $var = file_get_contents('http://site.tld/worker.php?input='.$input);

在 中worker.php,简单地回显您的结果。

于 2012-12-31T02:07:05.463 回答
0

很遗憾你在 Windows 上运行,因为 *nix 上的sys5 扩展非常棒!

您始终可以使用文件或数据库等进行通信。

于 2012-12-31T02:08:05.393 回答