我开发了一个元搜索引擎,我想做的优化之一是并行处理搜索 API。想象一下,搜索引擎 A 在 0.24 秒内检索到结果,SE B 在 0.45 秒内检索到结果,从 SE C 在 0.5 秒内检索到结果。使用其他开销,元搜索引擎可以在大约 1.5 秒内返回聚合结果,这是可行的。现在我想做的是并行发送这些请求,而不是像目前那样串行发送,并将时间缩短到一秒以下。我调查了 exec、fork、threading 和所有,由于各种原因,都失败了。现在我只花了一两天时间,所以我可能错过了一些东西。理想情况下,我想在我的开发机器(localhost)上的 WAMP 堆栈上实现它,然后看看如何在 Linux 网络服务器上实现。任何帮助表示赞赏。
举个简单的例子:假设我们有两个文件要同时运行。文件 1:
<?php
// file1.php
echo 'File 1 - Test 1'.PHP_EOL;
$sleep = mt_rand(1, 5);
echo 'Start Time: '.date("g:i:sa").PHP_EOL;
echo 'Sleep Time: '.$sleep.' seconds.'.PHP_EOL;
sleep($sleep);
echo 'Finish Time: '.date("g:i:sa").PHP_EOL;
?>
现在,想象文件二是相同的......这个想法是,如果并行运行,时间的命令行输出应该是相同的,例如:
File 1 - Test 1
Start Time: 9:30:43am
Sleep Time: 4 seconds.
Finish Time: 9:30:47am
但无论我使用 exec、popen 还是其他什么,我都无法让它在 PHP 中工作!