curl多线程类。
<?php /** Curl 多線程類* 使用方法:* ========================$urls = array("http://baidu.com", "http://dzone.com", "http://google.com");$mp = new MultiHttpRequest($urls);$mp->start();* ========================* 當然,如果你喜歡,還可以對此類進行擴展,* 比如,如果需要用戶登錄才能采集的數據怎么辦?* 只要我們使用 curl 來做偽登錄,把 cookie 保存到文件,* 每次請求發送有效的 cookie 即可實現偽登錄抓去數據!*/ class MultiHttpRequest {public $urls = array();public $curlopt_header = 0;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){$text[$k] = curl_multi_getcontent($curl[$k]);curl_multi_remove_handle($handle, $curl[$k]);}curl_multi_close($handle);return $text;}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);}public function get_content($url){$ch = curl_init();curl_setopt ($ch, CURLOPT_URL, $url);curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);return curl_exec($ch);} }
?
轉載于:https://www.cnblogs.com/caizhendong/p/5628925.html
總結
- 上一篇: 洛克王国光明女神艾米怎么打 打法
- 下一篇: 下载旧版本的NDK