PHP CURL_MULTI 多线程采集网页函数

PHP CURL_MULTI 多线程采集网页函数

PHP代码
  1. <?php    
  2.   
  3. $text = remote(array('http://www.imfeng.com/','http://www.aligaduo.com/'));    
  4.   
  5. print_r($text);    
  6.   
  7.      
  8.   
  9. function remote($urls) {    
  10.   
  11.     if (!is_array($urlsor count($urls) == 0) {    
  12.   
  13.         return false;    
  14.   
  15.     }    
  16.   
  17.      
  18.   
  19.     $curl = $text = array();    
  20.   
  21.     $handle = curl_multi_init();    
  22.   
  23.     foreach($urls as $k => $v) {    
  24.   
  25.         $nurl[$k]= preg_replace('~([^:\/\.]+)~ei'"rawurlencode('\\1')"$v);    
  26.   
  27.         $curl[$k] = curl_init($nurl[$k]);    
  28.   
  29.         curl_setopt($curl[$k], CURLOPT_RETURNTRANSFER, 1);    
  30.   
  31.         curl_setopt($curl[$k], CURLOPT_HEADER, 0);    
  32.   
  33.         curl_multi_add_handle ($handle$curl[$k]);    
  34.   
  35.     }    
  36.   
  37.      
  38.   
  39.     $active = null;    
  40.   
  41.     do {    
  42.   
  43.         $mrc = curl_multi_exec($handle$active);    
  44.   
  45.     } while ($mrc == CURLM_CALL_MULTI_PERFORM);    
  46.   
  47.      
  48.   
  49.     while ($active && $mrc == CURLM_OK) {    
  50.   
  51.         if (curl_multi_select($handle) != -1) {    
  52.   
  53.             do {    
  54.   
  55.                 $mrc = curl_multi_exec($handle$active);    
  56.   
  57.             } while ($mrc == CURLM_CALL_MULTI_PERFORM);    
  58.   
  59.         }    
  60.   
  61.     }    
  62.   
  63.      
  64.   
  65.     foreach ($curl as $k => $v) {    
  66.   
  67.         if (curl_error($curl[$k]) == "") {    
  68.   
  69.         $text[$k] = (string) curl_multi_getcontent($curl[$k]);    
  70.   
  71.         }    
  72.   
  73.         curl_multi_remove_handle($handle$curl[$k]);    
  74.   
  75.         curl_close($curl[$k]);    
  76.   
  77.     }    
  78.   
  79.     curl_multi_close($handle);    
  80.   
  81.     return $text;    
  82.   
  83. }   


上一篇: php.ini 中文详解
下一篇: php插入mysql数据避免重复插入
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: php curl
相关日志:
评论: 0 | 引用: 0 | 查看次数: 2735
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑