您可以发布博客文章。

 
  
  
  
  
  1. <?php 
  2.  
  3. /* 
  4.  * To change this template, choose Tools | Templates 
  5.  * and open the template in the editor. 
  6.  */ 
  7.  
  8. /** 
  9.  * Description of CUrl 
  10.  * 
  11.  * @author Administrator 
  12.  */ 
  13. class CUrl { 
  14.          
  15.     private static $curl = null; 
  16.     private static $mcurl = null; 
  17.  
  18.  
  19.  
  20.     public static function start() { 
  21.         self::$curl = curl_init(); 
  22.         curl_setopt(self::$curl, CURLOPT_RETURNTRANSFER, 1); 
  23.         curl_setopt(self::$curl, CURLOPT_HEADER, 0);  
  24.     } 
  25.     /** 
  26.      * 取得页面信息 
  27.      * @param type $url 
  28.      * @return type  
  29.      */ 
  30.     public static function Info($url){ 
  31.         self::start(); 
  32.         curl_setopt(self::$curl, CURLOPT_URL, $url); 
  33.         $info = curl_getinfo(self::$curl); 
  34.         self::close(); 
  35.          
  36.         return $info
  37.     } 
  38.     /** 
  39.      * 下载图片 
  40.      * @param string $url 
  41.      * @param string $savepath  
  42.      */ 
  43.     public static function Download($url,$savepath){ 
  44.         $content = CUrl::Http($url); 
  45.         preg_match_all('/http:\/\/[^\?^\,]*?jpg/i'$content$matches); 
  46.         list($jpgs) = $matches
  47.         $index = @$_GET['index'] ? @$_GET['index'] : 0; 
  48.         $count = count($jpgs); 
  49.  
  50.         /*echo "<pre>"; 
  51.         print_r($jpgs); 
  52.         echo "</pre>"; 
  53.         die;*/ 
  54.  
  55.         $pic = CUrl::Http($jpgs[$index], null, $info); 
  56.         if(!in_array($info['http_code'],array('404','302')) && $picfile_put_contents("{$savepath}/{$index}.jpg"$pic); 
  57.         $index++; 
  58.         if($index==($count-1)) exit('<br/>the End'); 
  59.         exit('<meta http-equiv="refresh" content="0; url=' . urldecode("http://www.qweibo.com/test.php?index={$index}") . '"/>'); 
  60.  
  61.     } 
  62.  
  63.     /** 
  64.      * 请求一个地址 
  65.      * @param string $url 
  66.      * @param array $post array("content" => "我是post值","upload" => "@F:/image/dsfdsf.rar"//要上传的本地文件地址) 
  67.      * @return  返回请求地址的页面内容 
  68.      */ 
  69.     public static function Http($url$post=null, &$info=array() , $timeout = null){ 
  70.         self::start(); 
  71.         curl_setopt(self::$curl, CURLOPT_URL, $url); 
  72.  
  73.         if(!emptyempty($post)){//POST($_POST)和上传文件($_FILES)都可 
  74.             $options = array
  75.                 CURLOPT_POST => 1, 
  76.                 CURLOPT_POSTFIELDS => $post
  77.             ); 
  78.             curl_setopt_array(self::$curl$options); 
  79.         } 
  80.         if(!is_array($info)) { 
  81.             @$info = curl_getinfo(self::$curl);//取得请求信息 如果传了引用的话就不再是默认值array(),引用的值是为空的 
  82.         } 
  83.         if($timeout){ 
  84.             //设置超时时间 
  85.             curl_setopt ( self::$curl, CURLOPT_TIMEOUT, $timeout ); 
  86.         } 
  87.         $output = curl_exec(self::$curl); 
  88.         if($output === false) { 
  89.             return 'Curl error: ' . curl_error(self::$curl);//返回一个保护当前会话最近一次错误的字符串 
  90.         } 
  91.  
  92.         self::close(); 
  93.          
  94.         return $output
  95.     } 
  96.     /** 
  97.      * 一次请求多个地址 
  98.      * @param array $urls 多个地址 
  99.      * @param array $posts 每个地址对应的POST数据 二维数组 
  100.      * @return 返回所有地址的内容  
  101.      */ 
  102.     public static function MultiHttp($urls$posts=null){ 
  103.         self::$mcurl = curl_multi_init(); 
  104.  
  105.         foreach ($urls as $i => $url) { 
  106.               $conn[$i]=curl_init($url); 
  107.               if(!emptyempty($posts[$i])){//POST($_POST)和上传文件($_FILES)都可 
  108.                     $options = array
  109.                         CURLOPT_POST => 1, 
  110.                         CURLOPT_POSTFIELDS => $posts[$i], 
  111.                     ); 
  112.                     curl_setopt_array($conn[$i], $options); 
  113.               } 
  114.               curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1); 
  115.               curl_multi_add_handle (self::$mcurl,$conn[$i]); 
  116.         } 
  117.  
  118.         do { $n=curl_multi_exec(self::$mcurl,$active); } while ($active); 
  119.  
  120.         foreach ($urls as $i => $url) { 
  121.               $outputs[$i]=curl_multi_getcontent($conn[$i]); 
  122.               curl_close($conn[$i]); 
  123.         } 
  124.  
  125.         return $outputs
  126.     } 
  127.  
  128.     public function close(){ 
  129.         curl_close(self::$curl); 
  130.     } 
  131.  
  132. ?> 

你可能感兴趣的:(博客,文章)