我有一个大约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);
}
上面的代码描述了我现在正在做的事情,但由于用户名数量很多,所以需要很多时间来返回所有的响应。有什么方法可以在更短的时间内实现它。
答案 0 :(得分:0)
您可以使用curl-multi-init和curl-multi-exec,以便异步处理您的请求。
答案 1 :(得分:0)
看看https://github.com/php-curl-class/php-curl-class,它会大大加快我们的卷曲请求。
它启用了多卷曲支持,并且使用起来非常简单。
关于您的时间问题,您可以使用
设置超时时间Curl::setTimeout($seconds)
或者就MultiCurl而言
MultiCurl::setTimeout($seconds)
您可以根据需要延长超时时间。