我有一个要求,调用近50多个URL来获取数据。我试过很多方面。最后坚持使用HTTPRequestPool。因为它比任何其他方法都快。我试过以下方法。
1.file_get_contents($ url) - 大约需要2分钟来完成所有50个请求 2.curl - 花了大约45到50秒来完成所有50个请求 3.HTTPRequest - 大约需要20到30秒才能完成所有50个请求 4.HttpRequestPool - 花了大约10到15秒来完成所有50个请求
但与我的竞争对手相比,10至15秒的速度仍然很慢。我希望在最多3到6秒内完成所有50个请求。我怎样才能达到目标时间范围。除了以上PHP之外还有其他选择。如果有,可以请任何人告诉我。
请帮我解决此问题。 谢谢, Sudhakar
答案 0 :(得分:0)
以下是我的代码。
for($i=0;$i<$url_cnt;$i++)
{
$req[$i] = new HttpRequest($URLs[$i], HttpRequest::METH_GET,array('redirect'=>4,'timeout'=>5,'connecttimeout'=>7));
}
$pool = new HttpRequestPool();
$pool->enablePipelining(true);
//Attaching the Request
try {
foreach($req as $r){
$pool->attach($r);
}
} catch (HttpRequestPoolException $ex) { }
try {
$pool->send();
}
catch (HttpRequestPoolException $x) {}
foreach($pool as $request)
{
$url_contents[] = $request->getResponseBody();
}
foreach($req as $r)
{
$pool->detach($r);
}
$pool->__destruct();
unset($pool);