完整代码:
 
复制代码 代码示例:
<?php   
/* 
 * curl_multi 经测试,大于四个网址时要比Foreach循环快.. 
 * by wc1217
 * edit:www.jb200.com
 */  
class curl_multi{
    //Curl句柄  
    //private $curl_handle = null;  
    //网址  
    private $url_list = array();  
    //参数  
    private $curl_setopt = array(  
        'CURLOPT_RETURNTRANSFER' => 1, //结果返回给变量  
        'CURLOPT_HEADER' => 0, //要HTTP头不?  
        'CURLOPT_NOBODY' => 0, //不要内容?  
        'CURLOPT_FOLLOWLOCATION' => 0, //自动跟踪  
        'CURLOPT_TIMEOUT' => 6//超时(s)  
    );  
  
    function __construct($seconds = 30){  
        set_time_limit($seconds);  
    }  
  
    /* 
     * 设置网址 
     * @list 数组 
     */  
    public function setUrlList($list = array()){  
        $this->url_list = $list;  
    }  
  
    /* 
     * 设置参数 
     * @cutPot array 
     */  
    public function setOpt($cutPot){  
        $this->curl_setopt = $cutPot + $this->curl_setopt;  
    }  
  
    /* 
     * 执行 
     * @return array 
     */
    public function exec(){  
        $mh = curl_multi_init();  
  
        foreach($this->url_list as $i => $url){  
            $conn[$i] = curl_init($url);  
  
            foreach($this->curl_setopt as $key => $val){  
                curl_setopt($conn[$i], preg_replace('/(CURLOPT_w{1,})/ie', '$0', $key), $val);  
            }  
            curl_multi_add_handle($mh, $conn[$i]);  
        }  
  
        $active = false;  
  
        do{  
            $mrc = curl_multi_exec($mh, $active);  
        }while($mrc == CURLM_CALL_MULTI_PERFORM);  
  
        while($active and $mrc == CURLM_OK){  
            if(curl_multi_select($mh) != -1){  
                do{  
                    $mrc = curl_multi_exec($mh, $active);  
                }while($mrc == CURLM_CALL_MULTI_PERFORM);  
            }  
        }  
  
        $res = array();  
        foreach($this->url_list as $i => $url){  
            $res[$i] = curl_multi_getcontent($conn[$i]);  
            curl_close($conn[$i]);  
            curl_multi_remove_handle($mh, $conn[$i]);   //用完马上释放资源    
        }  
        curl_multi_close($mh);  
        return $res;  
    }
} 
?>