php curl 多线程类实例分享
在之前的文章中,我们分享过一个好用的php 多线程下载类,本节再为大家介绍一个php的多线程类,不过这个是通过curl来实现的。
有兴趣的朋友,可以把两篇文章作个对比,看看其中的不同与各自的长处在哪里?
代码如下:
<?php /* * @ php Curl 多线程类 * edit by www.jbxue.com */ class MultiHttpRequest{ public $urls=array(); public $curlopt_header=1; public $method="GET"; function __construct($urls=false){ $this->urls=$urls; } function set_urls($urls){ $this->urls=$urls; return $this; } function is_return_header($b){ $this->curlopt_header=$b; return $this; } function set_method($m){ $this->medthod=strtoupper($m); return $this; } function start(){ if(!is_array($this->urls) || count($this->urls)==0){ return false; } $curl=$text=array(); $handle=curl_multi_init(); foreach($this->urls as $k=>$v){ $curl[$k]=$this->add_handle($handle,$v); } $this->exec_handle($handle); foreach($this->urls as $k=>$v){ curl_multi_getcontent($curl[$k]); echo $curl[$k]."\n"; //$text[$k]= curl_multi_getcontent($curl[$k]); //echo $text[$k],"\n\n"; curl_multi_remove_handle($handle,$curl[$k]); } curl_multi_close($handle); } private function add_handle($handle,$url){ $curl=curl_init(); curl_setopt($curl,CURLOPT_URL,$url); curl_setopt($curl,CURLOPT_HEADER,$this->curlopt_header); curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); curl_multi_add_handle($handle,$curl); return $curl; } private function exec_handle($handle){ $flag=null; do{ curl_multi_exec($handle,$flag); } while ($flag > 0); } } ?>
调用示例
<?php $urls=array( 'http://www.jbxue.com/article/665.html', 'http://www.jbxue.com/article/392.html', 'http://www.jbxue.com/article/281.html'); $mp=new MultiHttpRequest($urls); $mp->start(); ?>
有关php中curl的相关内容,请参考如下文章:
php curl上传文件
php开启curl扩展
php curl post的简单示例
php curl应用实例
php curl用法实例代码
php curl 学习总结
您可能感兴趣的文章:
php curl 多线程类实例分享
php curl模拟post请求的例子
php多线程下载远程多个文件的函数
php中的curl使用心得详解
php 多线程抓取网页的代码分享
php 爱站关键词采集器的示例代码
php 获取远程网页内容简单函数
PHP CURL获取cookies模拟登录的方法介绍
php curl获取指定IP所有信息的API代码
php如何使用curl?(用法介绍)