以前使用curl的多線程并不是真正的多線程,只是一種模擬的多線程,現(xiàn)在使用pthreads來實(shí)現(xiàn)真正意義上的多線程。
下載:
windows下:
http://windows.php.net/downloads/pecl/releases/pthreads/0.0.45/
mac、unix、linux下:
https://github.com/krakjoe/pthreads
安裝方式:
windows下:
解壓得到pthreadVC2.dll和php_pthreads.dll文件,把vc2文件放到php.exe同級目錄,把php_pthreads.dll放到擴(kuò)展目錄下。
修改php.ini文件 添加extension=php_pthreads.dll
修改Apache配置文件httpd.conf 添加LoadFile "yourpath/php/pthreadVC2.dll"
mac、unix、linux下:
具體可參考宴哥的博客http://blog.s135.com/pthreads/
調(diào)用方式:
具體的用法也可以參考宴哥的博客http://blog.s135.com/pthreads/
結(jié)合以前的get_html也可以這樣來實(shí)現(xiàn)類
1 class threads extends Thread 2 { 3 public $url = ''; 4 public $options = array(); 5 public $data; 6 7 public function __construct($url, $options = array()){ 8 $this->url = $url; 9 $this->options = $options;10 }11 12 public function run(){13 if(!empty($this->url)){14 $this->data = $this->get_html($this->url, $this->options);15 }16 }17 18 public function get_html($url,$options = array()){19 if(empty($options)){20 $options[CURLOPT_RETURNTRANSFER] = true;21 $options[CURLOPT_TIMEOUT] = 5;22 }23 $ch = curl_init($url);24 curl_setopt_array($ch,$options);25 $html = curl_exec($ch);26 curl_close($ch);27 if($html === false){28 return false;29 }30 return $html;31 }32 }
新聞熱點(diǎn)
疑難解答
圖片精選