教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php curl 多线程类实例分享

php curl 多线程类实例分享

发布时间:2016-09-23   编辑:jiaochengji.com
本文介绍下,在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?(用法介绍)

[关闭]
~ ~