Heim >Backend-Entwicklung >PHP-Tutorial >PHP Curl多线程批量打开网址的类

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

WBOY
WBOYOriginal
2016-06-20 13:05:011242Durchsuche

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>}

使用示例如下:

<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);


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:网站添加RSS功能Nächster Artikel:php 数组去重方法小结