Home > Backend Development > PHP Tutorial > PHP Curl多线程批量打开网址的类

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

WBOY
Release: 2016-06-20 13:05:01
Original
1241 people have browsed it

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

代码如下:

<p><?php</p>class curl_multi{<br />    //Curl句柄<br />    private $curl_handle=null;<br />    //网址<br />    private $url_list=array();<br />    //参数<br />    private $curl_setopt=array(<br />        'CURLOPT_RETURNTRANSFER'=>1,//结果返回给变量<br />        'CURLOPT_HEADER'=>0,//要HTTP头不?<br />        'CURLOPT_NOBODY'=>0,//不要内容?<br />        'CURLOPT_FOLLOWLOCATION'=>0,//自动跟踪<br />        'CURLOPT_TIMEOUT'=>6//超时(s)<br />    );<br />    function __construct($seconds=30){<br />        set_time_limit($seconds);<br />    }<br />    /*<br />     * 设置网址<br />     * @list 数组<br />     */<br />    public function setUrlList($list=array()){<br />        $this->url_list=$list;<br />    }<br />    /*<br />     * 设置参数<br />     * @cutPot array<br />     */<br />    public function setOpt($cutPot){<br />        $this->curl_setopt=$cutPot+$this->curl_setopt;<br />    }<br />    /*<br />     * 执行<br />     * @return array<br />     */<br />    public function exec(){<br />        $mh=curl_multi_init();<br />        foreach($this->url_list as $i=>$url){<br />            $conn[$i]=curl_init($url);<br />            foreach($this->curl_setopt as $key=>$val){<br />                curl_setopt($conn[$i],preg_replace('/(CURLOPT_\w{1,})/ie','$0',$key),$val);<br />            }<br />            curl_multi_add_handle($mh,$conn[$i]);<br />        }<br />        $active=false;<br />        do{<br />            $mrc=curl_multi_exec($mh,$active);<br />        }while($mrc==CURLM_CALL_MULTI_PERFORM);<br /><br />        while($active and $mrc==CURLM_OK){<br />            if(curl_multi_select($mh) != -1){<br />                do{<br />                    $mrc=curl_multi_exec($mh,$active);<br />                }while($mrc==CURLM_CALL_MULTI_PERFORM);<br />            }<br />        }<br />        $res=array();<br />        foreach($this->url_list as $i=>$url){<br />            $res[$i]=curl_multi_getcontent($conn[$i]);<br />            curl_close($conn[$i]);<br />            curl_multi_remove_handle($mh,$conn[$i]);//释放资源  <br />        }<br />        curl_multi_close($mh);<br />        return $res;<br />    }<br /><p>}
Copy after login

使用示例如下:

<p>$url_array=array('http://www.baidu.com','http://www.scutephp.com','http://www.taobao.com');</p>$curl=new curl_multi;<br />$curl->setUrlList($url_array);<br />$result=$curl->exec();<br />echo '<pre class="brush:php;toolbar:false">';<br />print_r($result);
Copy after login


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template