当前位置: 代码迷 >> PHP >> php CURL 采集有关问题-
  详细解决方案

php CURL 采集有关问题-

热度:71   发布时间:2016-04-29 00:34:19.0
php CURL 采集问题---请指教
PHP代码
 
PHP code
      <?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目录下,重启apache

PHP.ini 开启了 CURL

但是还是不行 错误提示我

Fatal error: Call to undefined function curl_multi_init() in D:\wamp\www\caiji\caiji.php on line 4

------解决方案--------------------
phpinfo();看看有没有curl,如果没有说明你根本没有开启成功(extension=php_curl.dll)
------解决方案--------------------
那你路劲没设置对,在试试~~
------解决方案--------------------
你看看你phpinfo()里面的php配置文件是你修改的那个吗?例如你把mysql模块关闭了在打开phpinfo()看看mysql模块是否开启,如果依然开启,那么说明你所用的php配置文件并不是你所修改的那个
------解决方案--------------------
标题党.
------解决方案--------------------
php CURL 采集问题---请指教
你应该问:
curl安装不成功---请指教



重启过apache吗,杀死过php-cgi吗。
------解决方案--------------------
这个可以用。
PHP code
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) } } }