>백엔드 개발 >PHP 튜토리얼 >PHP Curl多线程批量打开网址的类

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

WBOY
WBOY원래의
2016-06-20 13:05:011237검색

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


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.