PHP代码
  
      <?php
 function Curl_http($array,$timeout){
    $res = array();
    $mh = curl_multi_init();//创建多个curl语柄
    $startime = getmicrotime();
    foreach($array as $k=>$url){
        $conn[$k]=curl_init($url);
        curl_setopt($conn[$k], CURLOPT_TIMEOUT, $timeout);//设置超时时间
        curl_setopt($conn[$k], CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($conn[$k], CURLOPT_MAXREDIRS, 7);//HTTp定向级别
        curl_setopt($conn[$k], CURLOPT_HEADER, 0);//这里不要header,加块效率
        curl_setopt($conn[$k], CURLOPT_FOLLOWLOCATION, 1); // 302 redirect
        curl_setopt($conn[$k],CURLOPT_RETURNTRANSFER,1);
        curl_multi_add_handle ($mh,$conn[$k]);
    }
     //防止死循环耗死cpu 这段是根据网上的写法
        do {
            $mrc = curl_multi_exec($mh,$active);//当无数据,active=true
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);//当正在接受数据时
        while ($active and $mrc == CURLM_OK) {//当无数据时或请求暂停时,active=true
            if (curl_multi_select($mh) != -1) {
                do {
                    $mrc = curl_multi_exec($mh, $active);
                } while ($mrc == CURLM_CALL_MULTI_PERFORM);
            }
        }
    foreach ($array as $k => $url) {
          curl_error($conn[$k]);
          $res[$k]=curl_multi_getcontent($conn[$k]);//获得返回信息
          $header[$k]=curl_getinfo($conn[$k]);//返回头信息
          curl_close($conn[$k]);//关闭语柄
          curl_multi_remove_handle($mh  , $conn[$k]);   //释放资源 
        }         
        curl_multi_close($mh);
        $endtime = getmicrotime();
        $diff_time = $endtime - $startime;        return array('diff_time'=>$diff_time,
               'return'=>$res,
                'header'=>$header       
 );
}
 //计算当前时间
 function getmicrotime() {
list($usec, $sec) = explode(" ",microtime());
        return ((float)$usec + (float)$sec);
}    //测试一下,curl 1个网址
$array = array(
"http://www.120ask.com/keshi.asp?c=69&a=&l=0&p=1",
);
 $data = Curl_http($array,'1');//调用
 var_dump($data);//输出?>
  libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll都拷贝到system32目录下,重启apachePHP.ini  开启了  CURL但是还是不行 错误提示我Fatal error: Call to undefined function curl_multi_init() in D:\wamp\www\caiji\caiji.php on line 4 

解决方案 »

  1.   

    对了 CURL库我下载了 但是不知道要引用那个文件才行
      

  2.   

    phpinfo();看看有没有curl,如果没有说明你根本没有开启成功(extension=php_curl.dll)
      

  3.   

    是的  的确是没有  但是我是真的开启了 apche下的php.ini 开启了  php下面的php.ini 也开启了 但是info里面就是不显示 我好无语啊
      

  4.   

    你看看你phpinfo()里面的php配置文件是你修改的那个吗?例如你把mysql模块关闭了在打开phpinfo()看看mysql模块是否开启,如果依然开启,那么说明你所用的php配置文件并不是你所修改的那个
      

  5.   


      大哥 我按照你的方法试试了  关闭了mysql
      
      info 显示   mysqlndmysqlnd enabled
    Version mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
    Compression supported
    SSL not supported
    Command buffer size 4096
    Read buffer size 32768
    Read timeout 31536000
    Collecting statistics Yes
    Collecting memory statistics No
      

  6.   

    php CURL 采集问题---请指教
    你应该问:
    curl安装不成功---请指教重启过apache吗,杀死过php-cgi吗。
      

  7.   

    这个可以用。array(3) { ["diff_time"]=> float(1.0497448444366) ["return"]=> array(1) { [0]=> NULL } ["header"]=> array(1) { [0]=> array(20) { ["url"]=> string(47) "http://www.120ask.com/keshi.asp?c=69&a=&l=0&p=1" ["content_type"]=> NULL ["http_code"]=> int(0) ["header_size"]=> int(0) ["request_size"]=> int(0) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(1) ["namelookup_time"]=> float(1) ["connect_time"]=> float(0) ["pretransfer_time"]=> float(0) ["size_upload"]=> float(0) ["size_download"]=> float(0) ["speed_download"]=> float(0) ["speed_upload"]=> float(0) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(-1) ["starttransfer_time"]=> float(0) ["redirect_time"]=> float(0) } } }
      

  8.   

    我说是mysql,你打出mysqlld有啥联系啊