ホームページ >バックエンド開発 >PHPチュートリアル >[Jie Ge が PHP について簡単に語る] 第 16 章 - ファイル転送ツール cURL の高度な使用法

[Jie Ge が PHP について簡単に語る] 第 16 章 - ファイル転送ツール cURL の高度な使用法

WBOY
WBOYオリジナル
2016-06-13 13:21:23878ブラウズ

[Jie Ge が簡単に PHP について語る] 第 16 弾 --- ファイル転送ツール cURL の高度な応用
上記の内容の続きを見てみましょう。 上記は、curl In の使い方を簡単に紹介したものです。この記事では、curl の高度なアプリケーションを 4 つのステップで説明します。

リクエストの関連情報を取得するには、curl の実行が完了した後、curl_getinfo() を使用します。

  1. // 新しい cURL リソースを作成します
  2. $ch =curl_init("http://www.lampbrother.net");
  3. // URL と対応するオプションを設定します
  4. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  5. // エラーがあるかどうかを確認します
  6. if(!curl_errno($ch))
  7. {
  8. $info =curl_getinfo($ch);
  9. var_dump($info);
  10. }
  11. // URL を取得してブラウザに渡します
  12. $html =curl_exec($ch);
  13. //cURL リソースを閉じ、システム リソースを解放します
  14. curl_close($ch);
  15. ?>

    打印出来的内容为:

    array
    'url' => string 'http://www.lampbrother.net' (length=26)
    'content_type' => null
    'http_code' => int 0
    'header_size' => int 0
    'request_size' => int 0
    'filetime' => int 0
    'ssl_verify_result' => int 0
    'redirect_count' => int 0
    'total_time' => float 0
    'namelookup_time' => float 0
    '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
    'certinfo' =>array

    'redirect_url' => 文字列 '' (長さ=0)

    返された配列には次の情報が含まれます:
    "url" //リソースネットワークアドレス
    "content_type" //コンテンツのエンコーディング
    "http_code" //HTTP ステータス コード
    “header_size” //ヘッダーサイズ
    "request_size" //リクエストのサイズ
    "filetime" //ファイル作成時間
    "ssl_verify_result" //SSL 検証結果
    “redirect_count” //ジャンプテクノロジー
    “total_time” //かかった合計時間
    “namelookup_time” //DNS クエリに時間がかかります
    “connect_time” //接続待機時間
    “pretransfer_time” // 転送前の準備時間
    "size_upload" //アップロードされたデータのサイズ
    “size_download” //ダウンロードしたデータのサイズ
    "speed_download" //ダウンロード速度
    "speed_upload" //アップロード速度
    "download_content_length" //ダウンロード コンテンツの長さ
    “upload_content_length” //アップロードされたコンテンツの長さ
    "starttransfer_time" //転送開始時間
    "redirect_time" //リダイレクト時間の消費

    curl を使用して、POST モードでデータを送信するブラウザをシミュレートすることもできます:

    まず、POST データを印刷できるページを作成しましょう:
  1. var_dump($_POST);
  2. ?>
POST データを送信するブラウザをシミュレートする新しいページを作成します:
  1. $url = "http://localhost/post.php";
  2. $post_data = 配列(
  3. "著者"=>"李潔",
  4. "タイトル"=>"李傑が PHP について語る"
  5. );
  6. //初期化、新しい cURL リソースを作成します
  7. $ch =curl_init();
  8. //URL と対応するオプションを設定します
  9. curl_setopt($ch,CURLOPT_URL,$url);
  10. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  11. curl_setopt($ch,CURLOPT_POST,1);
  12. curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
  13. //URL を取得してブラウザに渡します
  14. $out =curl_exec( $ch );
  15. //cURL リソースを閉じ、システム リソースを解放します
  16. curl_close($ch);
  17. echo $output ;
  18. ?>
    印刷結果:

    配列
    '作成者' => 文字列 '李潔' (長さ=4)
    'タイトル' => 文字列 'Jie Ge が PHP について語ります' (length=11)


    強力なカールが投稿データの受け渡しに役立っていることがわかります。

    1. 投稿データを post.php ページに渡します
    2.post.php ページには、
    ページに出力された投稿データが表示されます 3.curlはpost.phpで受け取って出力した投稿データを取得してページ上に出力します!

    post を使用してデータを転送できるだけでなく、ファイルをアップロードすることもできます。方法は基本的に同じです。


    curl.php
  1. $url = "http://localhost/upload.php";
  2. $post_data = array(
  3. "title"=> ;"すごい!!!",
  4. "pic"=>"@d: リー・ウェンカイの美しいヌード写真.jpg"
  5. );
  6. //初期化、新しい cURL リソースを作成します
  7. $ch =curl_init();
  8. //URL と対応するオプションを設定します
  9. curl_setopt($ch,CURLOPT_URL,$url);
  10. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  11. curl_setopt($ch,CURLOPT_POST,1);
  12. curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
  13. // URL を取得してブラウザに渡します
  14. $out =curl_exec($ch);
  15. //cURL リソースを閉じ、システム リソースを解放します
  16. curl_close($ch);
  17. echo $output;
  18. ?>

upload.php
  1. var_dump($_FILES);
  2. ?>

    返される値:

    配列
    'pic' =>配列
    'name' => 文字列 'Li Wenkai の美しいヌード写真.jpg' (長さ=18)
    'type' => 文字列 'application/octet-stream' (長さ=24)
    'tmp_name' => 文字列 'F:LAMPBrotherEnvironmentalwamp_32tmpphp9A73.tmp' (長さ=52)
    'エラー' => int 0
    'サイズ' => int 0
  1. $post_data = array(
  2. "title"=>"Amazing!!!",
  3. "pic"=>"@d: 李文凱の美しいヌード写真.jpg "
  4. );

アップロードする際の注意点は、アップロードするファイル名の前に@記号を付ける必要があることです!

cURL バッチ処理:

cURL には、複数の URL 接続を同期または非同期で処理できる高度なアプリケーションであるバッチ ハンドラーもあります:
  1. // cURL リソースのペアを作成します
  2. $ch1 =curl_init();
  3. $ch2 =curl_init ( );
  4. // URL と対応するオプションを設定します
  5. curl_setopt($ch1, CURLOPT_URL, "http://www.li-jie.me/") ;
  6. curl_setopt($ch1, CURLOPT_HEADER, 0);
  7. curl_setopt($ch2, CURLOPT_URL, "http://www.lampbrother.net/");
  8. curl_setopt($ch2, CURLOPT_HEADER, 0);
  9. // バッチ cURL ハンドルを作成します
  10. $mh =curl_multi_init();
  11. //ハンドルを 2 つ追加します
  12. curl_multi_add_handle($mh,$ch1);
  13. curl_multi_add_handle($mh,$ch2);
  14. $running=null;
  15. //実行バッチハンドル
  16. do {
  17. usleep(10000);
  18. curl_multi_exec($mh,$ running);
  19. } while ($running > 0);
  20. // すべてのハンドルを閉じる
  21. curl_multi_remove_handle($mh, $ch1) ;
  22. curl_multi_remove_handle($mh, $ch2);
  23. curl_multi_close($mh);
  24. ?>

$running は、http://www.li-jie.me と http://www.lampbrother.net からページ コンテンツを収集し、複数の URL のバッチ処理を実装します。

ご覧のとおり、将来的には、コレクション Web サイトでは file_get_contents と fopen を廃止する必要があります。Web アプリケーションに多くの色を追加する強力な cURL を使用してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。