如何在并行运行的脚本之间传递变量

时间:2012-12-31 01:59:05

标签: php parallel-processing

我在带有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'];

这很有效。 initiator.php的$ input变量成功传递给worker.php,它接收它并且initiator.php保持chugging。但是,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进程可以在内存中相互传递变量吗?

3 个答案:

答案 0 :(得分:0)

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

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

worker.php中,只需回显您的结果。

答案 1 :(得分:0)

你在Windows上运行真是太遗憾了,因为* nix上的sys5 extension非常棒!

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

答案 2 :(得分:0)

感谢您的帮助,尽管我最终做的事与我原来的问题有点不同。我试图运行不同的cURL请求。 curl_multi_exec()最终为我效力。