У меня есть требование, позвонив почти 50+ URL для получения данных. Я пытался во многих отношениях. Наконец придерживайтесь HTTPRequestPool. Потому что это было быстрее, чем любые другие методы. Я попробовал ниже методы.
1.file_get_contents ($ url) — для выполнения всех 50 запросов потребовалось около 2 минут
2.curl — для выполнения всех 50 запросов потребовалось от 45 до 50 секунд
3.HTTPRequest — для завершения всех 50 запросов потребовалось от 20 до 30 секунд.
4.HttpRequestPool — для выполнения всех 50 запросов потребовалось от 10 до 15 секунд.
Но все же 10-15 секунд также медленные, если сравнивать с моими конкурентами. Я хочу выполнить все 50 запросов максимум за 3-6 секунд. Как я могу достичь своих целевых сроков. Есть ли какие-либо альтернативы помимо вышеперечисленного в PHP. Если да, может кто-нибудь, пожалуйста, скажите мне это.
Пожалуйста, помогите мне решить эту проблему.
Спасибо,
Sudhakar
Ниже мой код.
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);
Других решений пока нет …