PHP 関数の紹介—curl_multi_add_handle(): 複数のハンドルを持つセッションに cURL ハンドルを追加します

PHPz
リリース: 2023-07-27 09:04:01
オリジナル
1165 人が閲覧しました

PHP 関数の概要 -curl_multi_add_handle(): 複数のハンドルを持つセッションに cURL ハンドルを追加する

ネットワーク リクエストの開発において、PHP の Curl 関数ライブラリは、最も一般的に使用されるツール ライブラリの 1 つです。 GET および POST リクエスト、リクエスト ヘッダーの設定、Cookie の送受信など、さまざまな HTTP リクエストを実行するための多くの機能が提供されます。

curl 関数ライブラリを使用する場合、複数のリクエストが同時に送信される状況がよく発生します。リクエストごとに個別の cURL ハンドルが使用されると、リソースが無駄になります。現時点では、PHP が提供するcurl_multi_add_handle() 関数を使用して、管理のために複数の cURL ハンドルをセッションに追加できます。

curl_multi_add_handle() 関数の構文は次のとおりです。

resource curl_multi_add_handle ( resource $mh , resource $ch )
ログイン後にコピー

パラメータ $mh は初期化された cURL セッション ハンドルを表し、$ch は追加される新しい cURL セッション ハンドルを表します。この関数はハンドル $ch をハンドル $mh に追加し、cURL マルチ ハンドルを返します。

次は、curl_multi_add_handle() 関数を使用したサンプル コードです。

<?php
$mh = curl_multi_init();  // 初始化一个cURL会话句柄

$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://www.example.com/api1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);  // 设置返回值不直接输出
curl_multi_add_handle($mh, $ch1);  // 将第一个cURL句柄添加到会话中

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://www.example.com/api2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);  // 将第二个cURL句柄添加到会话中

// 循环执行直到所有请求完成
do {
    $status = curl_multi_exec($mh, $running);
} while ($status === CURLM_CALL_MULTI_PERFORM || $running);

// 获取第一个请求的结果
$response1 = curl_multi_getcontent($ch1);
echo "Response 1: " . $response1 . "
";

// 获取第二个请求的结果
$response2 = curl_multi_getcontent($ch2);
echo "Response 2: " . $response2 . "
";

// 关闭会话句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>
ログイン後にコピー

上記のサンプル コードでは、最初に、curl_multi_init() 関数を使用して cURL セッション ハンドル $mh が初期化されます。次に、2 つの独立した cURL セッション ハンドル $ch1 と $ch2 が作成され、要求された URL とその他のオプションが、curl_setopt() 関数を使用して設定されます。次に、curl_multi_add_handle() 関数を使用して、$c1 と $c2 をセッション ハンドル $mh に追加します。次に、curl_multi_exec() 関数を使用して、すべてのリクエストが完了するまで複数のリクエストをループで実行します。最後に、curl_multi_getcontent() 関数を使用して、各リクエストの結果を取得し、結果を出力します。

curl_multi_add_handle() 関数を使用すると、複数の cURL ハンドルのセッションを効果的に管理でき、ネットワーク リクエストの効率とコードの保守性が向上します。実際の開発では、curl_multi_remove_handle() 関数やcurl_multi_close() 関数などの他の関数を組み合わせて、より複雑なネットワーク要求タスクを完了することもできます。

要約すると、curl_multi_add_handle() 関数は、管理のために複数の cURL ハンドルをセッションに追加できる非常に便利な関数であり、それによってネットワーク リクエストの効率とコードの保守性が向上します。実際の開発では、この機能を使用して複数のネットワーク リクエストを同時に送信し、必要に応じて各リクエストを処理できます。

以上がPHP 関数の紹介—curl_multi_add_handle(): 複数のハンドルを持つセッションに cURL ハンドルを追加しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート