日常の PHP 開発では、プログラマーは、API インターフェイスのリクエスト、リモート コンテンツの取得など、データを取得するために他のサーバーと対話する必要があることがよくあります。 cURL (クライアント URL) 拡張ライブラリは、これらのネットワーク通信操作を簡素化するための強力なツール セットを提供します。このうち、 curl_multi_getcontent()関数は、マルチセッション モードで実行された cURL リクエストの結果を取得するために使用されます。
curl_multi_getcontent()関数の主な機能は、curl_multi_init()によって作成された複数の cURL セッションから各セッションの戻りコンテンツを抽出することです。 curl_multi_exec()を使用して複数のリクエストを同時に実行する場合、この関数を呼び出して各リクエストの応答結果を取得できます。使用方法は非常に簡単で、対応する cURL リソース ハンドルを渡すだけです。
// 初期化cURLセッション
$ch1 = curl_init('http://www.example.com/api1');
$ch2 = curl_init('http://www.example.com/api2');
// 新しいものを作成するcURL複数のハンドル
$mh = curl_multi_init();
// 将两个セッション添加到複数のハンドル中
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
// 执行複数のハンドル的cURLセッション
do {
$status = curl_multi_exec($mh, $active);
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);
// 循环获取每个セッション的内容
$contents = array();
foreach([$ch1, $ch2] as $ch) {
$content = curl_multi_getcontent($ch);
$contents[] = $content;
}
// 关闭複数のハンドル的cURLセッション
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
// 取得した内容を出力する
var_dump($contents);
上記の例では、2 つの独立した cURL リクエストが最初にcurl_init()によって初期化され、次に、 curl_multi_init()を使用してマルチセッション ハンドルが作成され、それに 2 つのリクエストが追加されます。複数のリクエストは、 curl_multi_exec()関数を通じて同時に実行できます。
実行後、 curl_multi_getcontent()関数を使用して各セッションの応答コンテンツを取得し、結果を配列に保存します。最後に、すべてのセッションを閉じ、 curl_multi_remove_handle()およびcurl_multi_close()を通じてリソースを解放します。
curl_multi_getcontent()を呼び出す前に、ターゲット セッションが実行を完了していることを確認する必要があります。リクエストが完了する前に本関数を呼び出した場合、不完全な内容やnull値が取得される可能性があります。
curl_multi_getcontent()関数は、同時リクエストを処理する場合に非常に便利です。これにより、開発者が複数の API へのリクエストを同時に開始して結果を取得できるようになり、ネットワーク通信の効率が大幅に向上します。これは、同時性の高いインターフェイス呼び出しや集計データのキャプチャの構築などのシナリオで習得する価値のある実用的な機能です。