我們在上一篇文章介紹了,php多線程類的實現方法,今天這篇文章給大家介紹php如何利用curl實現多線程的方法,有了這個類,我們也可利用該類執行多線程任務了!
php利用curl實現多線程類的樣本
<?php class curl_multi{ private $url_list=array(); private $curl_setopt=array( 'CURLOPT_RETURNTRANSFER' => 1,//結果返回給變數 'CURLOPT_HEADER' => 0,//是否需要返回HTTP頭 'CURLOPT_NOBODY' => 0,//是否需要返回的內容 'CURLOPT_FOLLOWLOCATION' => 0,//自動跟蹤 'CURLOPT_TIMEOUT' => 6//逾時時間(s) ); function construct($seconds=30){ set_time_limit($seconds); } /* * 設定網址 * @list 數組 */ public function setUrlList($list=array()){ $this->url_list=$list; } /* * 設定參數 * @cutPot array */ public function setOpt($cutPot){ $this->curl_setopt=$cutPot+$this->curl_setopt; } /* * 執行 * @return array */ public function execute(){ $mh=curl_multi_init(); foreach($this->url_list as $i=>$url){ $conn[$i]=curl_init($url); foreach($this->curl_setopt as $key => $val){ curl_setopt($conn[$i],preg_replace('/(CURLOPT_\w{1,})/ie','$0',$key),$val); } curl_multi_add_handle($mh,$conn[$i]); } $active=false; do{ $mrc=curl_multi_exec($mh,$active); }while($mrc == CURLM_CALL_MULTI_PERFORM); while($active and $mrc == CURLM_OK){ if(curl_multi_select($mh) != -1){ do{ $mrc=curl_multi_exec($mh,$active); }while($mrc == CURLM_CALL_MULTI_PERFORM); } } $res=array(); foreach($this->url_list as $i => $url){ $res[$i]=curl_multi_getcontent($conn[$i]); curl_close($conn[$i]); curl_multi_remove_handle($mh,$conn[$i]);//釋放資源 } curl_multi_close($mh); return $res; } }
php使用多線程下載類樣本:下載遠程圖片
$curl_mul=new curl_multi(); $curl_mul->setUrlList(array(' 'http://www.baidu.com/img/baidu_sylogo1.gif')); $a=$curl_mul->execute(); $i=1; foreach($a as $v){ $filename=$i.'.gif'; $fp2=@fopen($filename,'a'); fwrite($fp2,$v); fclose($fp2); $i++; }
總結:
這篇文章給大家介紹了php利用curl實現多線程類的執行個體,以及php curl多線程下載圖片執行個體,希望可以對工作有所協助!
相關推薦:
實現php多線程類的案例
php實現非同步呼叫多線程的方法
php多線程類比實現的三種方法介紹
php多線程的實現執行個體