首页 > 编程 > PHP > 正文

PHP CURL 多线程操作代码实例

2019-11-21 23:01:25
字体:
来源:转载
供稿:网友

使用方法:

$urls = array("http://baidu.com", "http://21andy.com", "http://google.com");$mp = new MultiHttpRequest($urls);$mp->start();
/* * Curl 多线程类 * 使用方法: * ========================$urls = array("http://baidu.com", "http://dzone.com", "http://google.com");$mp = new MultiHttpRequest($urls);$mp->start(); * ======================== */class MultiHttpRequest {  public $urls = array();  public $curlopt_header = 1;  public $method = "GET";   function __construct($urls = false) {    $this->urls = $urls;  }   function set_urls($urls) {    $this->urls = $urls;    return $this;   }    function is_return_header($b) {     $this->curlopt_header = $b;     return $this;   }    function set_method($m) {     $this->medthod = strtoupper($m);     return $this;   }    function start() {     if(!is_array($this->urls) or count($this->urls) == 0){      return false;     }     $curl = $text = array();     $handle = curl_multi_init();     foreach($this->urls as $k=>$v){      $curl[$k] = $this->add_handle($handle, $v);     }      $this->exec_handle($handle);     foreach($this->urls as $k=>$v){       curl_multi_getcontent($curl[$k]);       echo $curl[$k]."/n";       //$text[$k] = curl_multi_getcontent($curl[$k]);       //echo $text[$k], "/n/n";       curl_multi_remove_handle($handle, $curl[$k]);     }     curl_multi_close($handle);   }    private function add_handle($handle, $url) {     $curl = curl_init();     curl_setopt($curl, CURLOPT_URL, $url);     curl_setopt($curl, CURLOPT_HEADER, $this->curlopt_header);     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);     curl_multi_add_handle($handle, $curl);     return $curl;   }    private function exec_handle($handle) {     $flag = null;     do {      curl_multi_exec($handle, $flag);     } while ($flag > 0);   }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表