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 サイトの他の関連記事を参照してください。