php curl 批量,PHP Curl批量多线程打开网址的类

这个博客介绍了如何使用PHP的Curl库实现批量多线程打开网址的功能。通过创建一个Curl_Multi类,设置了Curl选项并初始化多个Curl句柄,然后利用curl_multi_*函数进行并发执行,最后获取并关闭每个连接,从而高效地抓取多个网址的内容。示例代码展示了如何使用该类来抓取并打印指定网址数组的内容。
摘要由CSDN通过智能技术生成

PHP Curl批量多线程打开网址的类,类代码如下:

class curl_multi{

//Curl句柄

private $curl_handle=null;

//网址

private $url_list=array();

//参数

private $curl_setopt=array(

'CURLOPT_RETURNTRANSFER'=>1,//结果返回给变量

'CURLOPT_HEADER'=>0,//要HTTP头不?

'CURLOPT_NOBODY'=>0,//不要内容?

'CURLOPT_FOLLOWLOCATION'=>0,//自动跟踪

'CURLOPT_TIMEOUT'=>6//超时(s)

);

function __construct($seconds=30){

set_time_limit($seconds);

}

/*

* 设置网址

* @list 数组

*/

public function setUrlList($list=array()){

$this->url_list=$list;

}

/*

* 设置参数

* @cutPot array

*/

public function setOpt($cutPot){

$this->curl_setopt=$cutPot+$this->curl_setopt;

}

/*

* 执行

* @return array

*/

public function exec(){

$mh=curl_multi_init();

foreach($this->url_list as $i=>$url){

$conn[$i]=curl_init($url);

foreach($this->curl_setopt as $key=>$val){

curl_setopt($conn[$i],preg_replace('/(CURLOPT_\w{1,})/ie','$0',$key),$val);

}

curl_multi_add_handle($mh,$conn[$i]);

}

$active=false;

do{

$mrc=curl_multi_exec($mh,$active);

}while($mrc==CURLM_CALL_MULTI_PERFORM);

while($active and $mrc==CURLM_OK){

if(curl_multi_select($mh) != -1){

do{

$mrc=curl_multi_exec($mh,$active);

}while($mrc==CURLM_CALL_MULTI_PERFORM);

}

}

$res=array();

foreach($this->url_list as $i=>$url){

$res[$i]=curl_multi_getcontent($conn[$i]);

curl_close($conn[$i]);

curl_multi_remove_handle($mh,$conn[$i]);//释放资源

}

curl_multi_close($mh);

return $res;

}

}

使用示例如下:

$url_array=array('http://www.baidu.com','http://www.phpernote.com','http://www.taobao.com');

$curl=new curl_multi;

$curl->setUrlList($url_array);

$result=$curl->exec();

echo '

';

print_r($result);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值