ホームページ >バックエンド開発 >PHPの問題 >PHPでのcurlの使用法は何ですか?

PHPでのcurlの使用法は何ですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-07-21 11:40:322976ブラウズ

PHP でのカールの使用法は次のとおりです: 1. CURL を使用してリクエストを送信します; 2. CURL リクエストの出力情報を取得します; 3. CURL を使用して GET リクエストを送信します; 4. CURL を使用して送信しますPOSTリクエスト。

PHPでのcurlの使用法は何ですか?

php でのcurlの使用法は次のとおりです:

1. を使用してリクエストを送信する基本的なプロセスCURL

CURL の PHP 拡張機能を使用して HTTP リクエストの送信を完了するには、通常、次の手順が必要です:

1. 接続ハンドルを初期化する;

2. CURL オプションを設定する;

3. 実行して結果を取得します;

##4. VURL 接続ハンドルを解放します。

次のプログラムの一部は、CURL を使用して HTTP を送信する一般的なプロセスです

// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,"http://www.codetc.com");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
// 3. 执行并获取HTML文档内容
$output = curl_exec($ch);
if($output === FALSE ){
 echo "CURL Error:".curl_error($ch);
}
// 4. 释放curl句柄
curl_close($ch);

上記のコードでは 4 つの関数が使用されています

curl_init()およびcurl_close()これは、それぞれ CURL 接続を初期化し、CURL 接続を閉じるためのもので、比較的単純です。

curl_exec()CURL リクエストを実行します。エラーが発生しない場合、関数は対応する URL によって返されたデータを返し、満足度を文字列として表します。エラーが発生した場合、関数は戻ります。間違い。出力が FALSE であるかどうかを判断するために等号が使用されていることに注意してください。これは、空の文字列を返すかエラーを返すかを区別するためです。

CURL 関数ライブラリで最も重要な関数は

curl_setopt() です。これは、CURL 関数ライブラリで定義されたオプションを設定することで HTTP 要求をカスタマイズできます。上記のコード スニペットでは 3 つの重要なオプションが使用されています:

  • CURLOPT_URL は要求された URL を指定します;

  • CURLOPT_RETURNTRANSFER は後で実行するために 1 に設定されますcurl_exec 関数の戻り値は、戻り文字列を標準出力に送って TRUE を返すのではなく、URL の戻り文字列です。

  • CURLLOPT_HEADER は 0 に設定され、HTTP ヘッダーがないことを示します。情報が返されます。

CURL には多くのオプションがあり、PHP の公式 Web サイト (http://www.php.net/manual/en/function.curl-setopt.php) で確認できます。 ) CURL でサポートされるすべてのオプションのリスト。

2. CURL リクエストの出力情報を取得する

curl_exec() 関数が実行された後、curl_getinfo() を使用できます。 CURL リクエストの出力を取得する関数 関連情報、サンプル コードは次のとおりです。

curl_exec($ch);
$info = curl_getinfo($sh);
echo ' 获取 '.$info['url'].'耗时'.$info['total_time'].'秒';

上記のコードでは、curl_getinfo は次のデータを含む連想配列を返します。

  • 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_uplpad: アップロードされたデータのサイズ。

  • size_download: ダウンロードされたデータのサイズ。

  • speed_download: ダウンロード速度。

  • speed_upload: アップロード速度。

  • download_content_length: ダウンロード コンテンツの長さ。

  • upload_content_length: アップロードされたコンテンツの長さ。

  • starttransfer_time: 転送を開始するタイムテーブル。

  • redirect_time: リダイレクトには時間がかかります。

curl_getinfo()この関数には、オプションのパラメータ $opt もあり、これを使用して、上記のフィールドに対応するいくつかの定数を設定できます。の場合、指定された情報のみが返されます。たとえば、$opt が CURLINFO_TOTAL_TIME に設定されている場合、curl_getinfo() 関数は、合計送信にかかった時間である total_time のみを返します。特定の送信情報に注意を払うには、$opt パラメータを設定すると非常に便利です。

3. CURL を使用して GET リクエストを送信する

CURL を使用して GET リクエストを送信する方法. GET リクエストを送信するための鍵は、次の URL を組み立てることです。正しいフォーマット。リクエストアドレスとGETデータは「?」で区切られ、次にGET変数の名前と値が「=」で区切られ、それぞれのGET名と値が「&」で結ばれます。 PHP は、GET リクエストとデータ部分を組み立てるために特に使用される関数

http_build_query を提供します。この関数は連想配列を受け取り、関連付けられたデータで記述された GET リクエスト文字列を返します。この関数を使用して、CURL が HTTP リクエストを送信する一般的なプロセスと組み合わせて、GET リクエストを送信する関数 doCurlGetRequest を閉じました。具体的なコードは次のとおりです:

/**
 *@desc 封闭curl的调用接口,get的请求方式。
*/
function doCurlGetRequest($url,$data,$timeout = 5){
 if($curl == "" || $timeout <= 0){
 return false;
 }
 $url = $url.&#39;?&#39;.http_bulid_query($data);
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
 return curl_exec($con);
}

4. CURL を使用して POST を送信します。リクエスト

CURL が提供するオプション

CURLOPT_POSTFIELDS を使用できます。このオプションを POST 文字列データに設定して、リクエストを本文に含めます。同様に、POST リクエストを送信する関数 doCurlPostRequest を実装しました。コードは次のとおりです。

/**
** @desc 封装 curl 的调用接口,post的请求方式
**/
function doCurlPostRequest($url,$requestString,$timeout = 5){
 if($url == &#39;&#39; || $requestString == &#39;&#39; || $timeout <=0){
 return false;
 }
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
 curl_setopt($con, CURLOPT_POST,true);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
 return curl_exec($con); 
}

上記のコードで

CURLOPT_POSTFIELDS を設定することに加えて、CURL_POST も設定します。 true に設定すると、このリクエストが POST リクエストとして識別されます。 GET データは POST リクエストでも送信でき、GET リクエスト データを URL に組み込むだけで済みます。

関連する学習の推奨事項:

PHP プログラミングの入門から熟練度まで

以上がPHPでのcurlの使用法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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