php curl并发,PHP CURL并发,多线程

/**

* php curl 并发 多线程

* @author suconghou

* @version v1.0

* @blog http://blog.suconghou.cn

* @date 2013.12.25

*

*/

class curl

{

private $mh;

private $ch;

function __construct()

{

$this-> mh=curl_multi_init();//创建批处理cURL句柄

}

//增加一个/组请求

//url为array

function add($url_array,$header=0,$no_body=0,$timeout=10)

{

is_array($url_array)||exit('should be a array');

foreach ($url_array as $value)

{

$this-> ch[$value]=curl_init();

curl_setopt_array($this-> ch[$value], array(CURLOPT_URL=>$value,CURLOPT_HEADER=>$header,CURLOPT_TIMEOUT=>$timeout,CURLOPT_NOBODY=>$no_body,CURLOPT_RETURNTRANSFER=>1));

curl_multi_add_handle($this-> mh,$this-> ch[$value]);

}

return $this;

}

///执行所有请求

function exec()

{

$running=null;

do

{

curl_multi_exec($this-> mh, $running);

curl_multi_select($this-> mh);

}

while ($running > 0);

foreach ($this-> ch as $key => $value)

{

$result[$key]=curl_multi_getcontent($value);

curl_multi_remove_handle($this-> mh,$value);

curl_close($value);

}

curl_multi_close($this-> mh);

return $result;

}

//快速发起忽略返回值的并行请求

function quick_exec($url_array)

{

is_array($url_array)||exit('should be a array');

foreach ($url_array as $key => $value)

{

$this-> ch[$key]=curl_init();

curl_setopt_array($this-> ch[$key], array(CURLOPT_URL=>$value,CURLOPT_HEADER=>0,CURLOPT_TIMEOUT=>1,CURLOPT_NOBODY=>1));

curl_multi_add_handle($this-> mh,$this-> ch[$key]);

}

$running=null;

do

{

curl_multi_exec($this-> mh,$running);

}

while($running > 0);

return true;

}

}

///example

$t1=microtime(true);//计时开始

$curl=new curl();

$url=array('http://www.suconghou.cn','http://my.oschina.net/u/1163434/blog/186299','http://www.php.net/manual/zh/function.curl-multi-init.php','http://blog.csdn.net/tsxw24/article/details/7979172','http://www.360doc.com/content/12/1012/16/1440938_241070613.shtml');

$url2=array('http://www.baidu.com/s?tn=baiduhome_pg&ie=utf-8&bs=php+%E5%A4%9A%E7%BA%BF%E7%A8%8B&f=8&rsv_bp=1&rsv_spt=1&wd=php++curl%E5%A4%9A%E7%BA%BF%E7%A8%8B&rsv_sug3=4&rsv_sug=0&rsv_sug1=1&rsv_sug4=101&inputT=2336','http://blog.sina.com.cn/s/blog_63940ce20100neyb.html');

//$a=$curl->quick_exec($url);

$a=$curl->add($url,1,0)->add($url2)->exec();

$i=0;

foreach ($a as $key => $value)

{

file_put_contents('1/'.$i.'.html',$value);

$i++;

}

$t2=microtime(true); ///计时结束

echo $t2-$t1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值