curl多线程类。
<?php
/*
* Curl 多线程类
* 使用方法:
* ========================
$urls = array("http://baidu.com", "http://dzone.com", "http://google.com");
$mp = new MultiHttpRequest($urls);
$mp->start();
* ========================
* 当然,如果你喜欢,还可以对此类进行扩展,
* 比如,如果需要用户登录才能采集的数据怎么办?
* 只要我们使用 curl 来做伪登录,把 cookie 保存到文件,
* 每次请求发送有效的 cookie 即可实现伪登录抓去数据!
*/
class MultiHttpRequest {
public $urls = array();
public $curlopt_header = 0;
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) or 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){
$text[$k] = curl_multi_getcontent($curl[$k]);
curl_multi_remove_handle($handle, $curl[$k]);
}
curl_multi_close($handle); return $text;
} 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);
} public function get_content($url){
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);
return curl_exec($ch);
}
}
curl多线程类。的更多相关文章
- PHP CURL 多线程 GET/POST 类
PHP CURL 多线程 GET/POST 类 2015-01-01 分类:技术文章 阅读(623) 评论(0) 如果有需要更正或更高效的建议,欢迎在OSchina分享~\(≧▽≦)/~ http:/ ...
- curl多线程下载类
<?php /** * curl多线程下载类 */class MultiHttpRequest{ public $urls = array (); private $res = array () ...
- php curl 多线程方法
<?php /** * curl 多线程 * @param array $array 并行网址 * @param int $timeout 超时时间 * @return array */ fun ...
- 让你的PHP程序真正的实现多线程(PHP多线程类)
通过WEB服务器来实现PHP多线程功能. 当然,对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程. 但不管怎么样,它还是能满足我们的一些需要的 ...
- PHP多线程类
<?php /** * @title: PHP多线程类(Thread) * @version: 1.0 * @author: phper.org.cn < web@phper.org.cn ...
- 让你的PHP程序真正的实现多线程(PHP多线程类)(转)
通过WEB服务器来实现PHP多线程功能. 当然,对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程. 但不管怎么样,它还是能满足我们的一些需要的 ...
- PHP多线程的实现(PHP多线程类)
通过WEB服务器来实现PHP多线程功能. 当然,对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程. 但不管怎么样,它还是能满足我们的一些需要的 ...
- delphi 线程教学第四节:多线程类的改进
第四节:多线程类的改进 1.需要改进的地方 a) 让线程类结束时不自动释放,以便符合 delphi 的用法.即 FreeOnTerminate:=false; b) 改造 Create 的参数 ...
- Java多线程(1):3种常用的实现多线程类的方法
(1) 继承java.lang.Thread类(Thread也实现了Runnable接口) 继承Thread类的方法是比较常用的一种,如果说你只是想起一条线程.没有什么其它特殊的要求,那么可以使用Th ...
随机推荐
- Tcl 简单介绍及特性
[简单介绍|特性] l 简单介绍 Tcl是一门产生于80年代末的语言,和Python一样,她是用c开发出来的.假设说C/Java/C++/C#为编译型语言的话,那么Python.Perl和Tcl就是 ...
- Wheel ProgressBar 实现之三——模拟进度过程
1. 效果展示: 知道如何画圆弧,如何精确画出进度文本之后,我们将进入 Wheel ProgressBar 实现的最后一个过程:模拟其动态呈现过程.如下图所示,初始时显示进度为 0 (上图),点击进度 ...
- 根据获取Enum名获取对应的值通用方法(仅限值为int的)
/// <summary> /// 获取枚举对应的值 /// </summary> /// <typeparam name="T">枚举类型&l ...
- SqlDataAdapter.Update()方法与SqlCommandBuilder(转)
用SqlDataAdapter操纵数据集时最常用到的就是Fill()与Update()方法.Fill()填充DataSet或DataTable,而Update()就是将DataSet或DataTabl ...
- SWFUpload的使用及其注意事项
SWFUpload的使用: 添加Jquery swfuploaad.js handler.js文件 配置参数: upload_url:文件将要被传到的处理程序 post_params:{“”: ...
- 枚举基类Enum详解
本文主要是对枚举类型的基类Enum类做一个介绍: 首先,Enum类位于java.lang包下,根据类的介绍可以发现,Enum类是Java中所有枚举类的父类,将枚举作为一个set或者Map的keys来使 ...
- Android 开发中的View事件监听机制
在开发过程中,我们常常根据实际的需要绘制自己的应用组件,那么定制自己的监听事件,及相应的处理方法是必要的.我们都知道Android中,事件的监听是基于回调机制的,比如常用的OnClick事件,你了解它 ...
- 【视图】实时库存【SSKC】
select A.pluno,A.pluname,A.qty,CASE WHEN b.QTY IS NULL THEN 0 ELSE B.QTY END AS XSQTY ,case when ...
- UIScrollView基本使用
- (void)viewDidLoad { [super viewDidLoad]; scrollView = [[UIScrollView alloc] initWithFrame:CGRectMa ...
- (转)C#与C++之间类型的对应
C#与C++之间类型的对应 Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte ...