ホームページ  >  記事  >  バックエンド開発  >  php CURLコレクション関連の問題 -

php CURLコレクション関連の問題 -

WBOY
WBOYオリジナル
2016-06-13 13:24:29865ブラウズ

php CURLコレクションの問題---アドバイスしてください
PHPコード
system32ディレクトリにコピーし、apache

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
      <?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);//输出

?>
  
PHP.iniを再起動してCURL

を有効にしますが、まだ機能しませんエラーは、

致命的なエラー: D :wampwwwcaijicaiji.php の 4 行目で未定義関数curl_multi_init() を呼び出します


------解決策---- ----------------

phpinfo(); Curl があるかどうかを確認します。ない場合は、まったく正常に開いていないことを意味します (extension=)。 php_curl.dll)

------解決策-----Lujin の設定が正しくありません。もう一度お試しください。 ~~

------解決策---------phpinfo() の php を見てください。設定ファイルはあなたが変更したものですか?たとえば、mysql モジュールをオフにした場合、phpinfo() を開いて mysql モジュールがオンになっているかどうかを確認します。まだオンになっている場合は、使用している php 設定ファイルが変更したものではないことを意味します。

------解決策---------見出しをクリックしてください。

-----解決策---------php CURL コレクションの問題---アドバイスしてください
次の質問をする必要があります:
curl のインストールに失敗しました -- アドバイスしてください

Apache を再起動して php-cgi を強制終了しましたか?

-----解決策---------

これは使えます。
PHP コード
配列(3) { ["diff_time"]=> float(1.0497448444366) ["return"]=> 配列(1) { [0]=> 配列(1) { [0]=> 配列(20) { ["url"]=> 文字列(47) "http://www.120ask.com/keshi.asp?c=69&a=&l=0&p=1" [ "コンテンツタイプ"]=> NULL ["http_code"]=> int(0) ["リクエストサイズ"]=> int; > int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> float(1) ["namelookup_time"]=> ; float(1) ["connect_time"]=> float(0) ["size_upload"]=> (0) ["speed_download"]=> float(0) ["speed_upload"]=> float(-1) ["upload_content_length"]=> -1) ["開始転送時間"]=> float(0) ["リダイレクト時間"]=> float(0) } }
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。