現在の位置: ホーム> 最新記事一覧> php curl_multi_add_handle()関数:複数のカールハンドルセッションを効率的に管理する方法

php curl_multi_add_handle()関数:複数のカールハンドルセッションを効率的に管理する方法

M66 2025-06-19

php curl_multi_add_handle()関数:複数のカールハンドルセッションを効率的に管理する方法

ネットワーク要求の開発では、PHPのCurl関数ライブラリは、最も一般的に使用されるツールライブラリの1つです。 Get and Post Requests、Request Headerの設定、Cookieの送信と受信など、さまざまなHTTPリクエストを実行するための多くの機能を提供します。

開発中、多くの場合、複数のリクエストを同時に送信する必要があります。各リクエストが別のカールハンドルを使用すると、リソースが無駄になる可能性があります。複数のリクエストを効率的に管理するために、PHPはcurl_multi_add_handle()関数を提供します。これにより、セッションに複数のCurlハンドルが追加され、管理が簡素化され、効率が向上します。

curl_multi_add_handle()function syntax

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

 resource curl_multi_add_handle ( resource $mh, resource $ch )

パラメーター説明:

  • $ MH :初期化されたカールセッションハンドル。
  • $ CH :セッションに追加する必要がある新しいカールハンドル。

この関数の関数は、新しいカールハンドル$ chをセッションハンドル$ mhに追加することです。リターン値は、後続の管理のためのカールマルチハンドルです。

curl_multi_add_handle()使用例

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

 <?php
// 初期化acURLセッションハンドル
$mh = curl_multi_init();
<p>// 最初のものを作成しますcURLハンドル<br>
$ch1 = curl_init();<br>
curl_setopt($ch1, CURLOPT_URL, "<a rel="noopener" target="_new" class="" href="https://www.example.com/api1">https://www.example.com/api1</a>");<br>
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);</p>
<p>// 最初のものを置きますcURLハンドル添加到会话中<br>
curl_multi_add_handle($mh, $ch1);</p>
<p>// 秒を作成しますcURLハンドル<br>
$ch2 = curl_init();<br>
curl_setopt($ch2, CURLOPT_URL, "<a rel="noopener" target="_new" class="" href="https://www.example.com/api2">https://www.example.com/api2</a>");<br>
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);</p>
<p>// 2番目のものを置きますcURLハンドル添加到会话中<br>
curl_multi_add_handle($mh, $ch2);</p>
<p>// すべてのリクエストが完了するまで、ループ実行<br>
do {<br>
$status = curl_multi_exec($mh, $running);<br>
} while ($status === CURLM_CALL_MULTI_PERFORM || $running);</p>
<p>// 最初のリクエストの結果を取得します<br>
$response1 = curl_multi_getcontent($ch1);<br>
echo "Response 1: " . $response1;</p>
<p>// 2番目のリクエストの結果を取得します<br>
$response2 = curl_multi_getcontent($ch2);<br>
echo "Response 2: " . $response2;</p>
<p>// 关闭セッションハンドル<br>
curl_multi_remove_handle($mh, $ch1);<br>
curl_multi_remove_handle($mh, $ch2);<br>
curl_multi_close($mh);<br>
?>

上記の例では、Curl_multi_init()関数を使用して、Curlセッションハンドル$ MHを初期に初期化します。次に、2つの独立したカールハンドル$ CH1と$ CH2が作成され、リクエストパラメーターが設定されます。次に、curl_multi_add_handle()関数を使用して、これらの2つのハンドルをセッションに追加します。 curl_multi_exec()関数を使用すると、すべてのリクエストが完了するまで複数のリクエストをループで実行します。最後に、各要求の結果は、curl_multi_getContent()関数を介して取得し、それを出力します。

要約します

curl_multi_add_handle()関数は、複数のCurlハンドルを管理するためのPHPの重要なツールです。ネットワーク要求の効率を改善し、コード構造を最適化できます。実際の開発では、curl_multi_remove_handle()やcurl_multi_close()などの関数を組み合わせて、ネットワーク要求の処理フローをさらに改善することもできます。

CURL_MULTI_ADD_HANDLE()関数を合理的に使用することにより、PHPで複数のHTTP要求をより効率的に管理および実行し、プログラムのパフォーマンスと保守性を向上させることができます。