Http请求替代方案

时间:2014-10-20 16:50:05

标签: php http curl httprequest

我有一个要求,调用近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

1 个答案:

答案 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);