如何在一个curl打开的连接中发送多个请求

时间:2018-03-26 10:11:40

标签: php curl

我有一个大约45 k用户名的数组我希望使用curl命中一个url,这会给我一个与这些用户名有关的响应。问题是我希望在更短的时间内实现它。

$username=['123','456','789'....] //upto 45k entries
for($i=0;$i<sizeof($username);$i++)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://abc.com.pk/hxc/get_user_details.php?uname='.$username[$i]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 20);
curl_setopt($ch, CURLOPT_HTTPGET, true);
$result = curl_exec($ch); 
curl_close($ch);
}

上面的代码描述了我现在正在做的事情,但由于用户名数量很多,所以需要很多时间来返回所有的响应。有什么方法可以在更短的时间内实现它。

2 个答案:

答案 0 :(得分:0)

您可以使用curl-multi-initcurl-multi-exec,以便异步处理您的请求。

答案 1 :(得分:0)

看看https://github.com/php-curl-class/php-curl-class,它会大大加快我们的卷曲请求。

它启用了多卷曲支持,并且使用起来非常简单。

关于您的时间问题,您可以使用

设置超时时间
Curl::setTimeout($seconds)

或者就MultiCurl而言

MultiCurl::setTimeout($seconds)

您可以根据需要延长超时时间。