PHPでは、curl_multi_init()関数を使用して、複数のCurl要求を同時に処理できるセッションを初期化します。この関数を通じて、新しいcurl_multiハンドルを作成してリソースハンドルを返すことができます。このセッションハンドルを使用して、セッションに複数のCurlリクエストハンドルを追加し、複数のURLを並行して処理する機能を達成できます。
Resource Curl_multi_init(void);
成功した場合、curl_multi_init()はセッションハンドルを返します。失敗した場合、 falseが返されます。
CURL_MULTI_INIT()関数を使用して複数のCurlのセッションを初期化し、複数のリクエストを同時に送信する方法を示す簡単な例を次に示します。
<?php
// セッションを初期化します
$mh = curl_multi_init();
// 作成する URL リスト
$urls = array(
'http://www.example.com/url1',
'http://www.example.com/url2',
);
// 作成する cURL 処理してセッションに追加します
$handles = array();
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch);
$handles[] = $ch;
}
// セッションを実行します cURL ハンドル
$active = null;
do {
$result = curl_multi_exec($mh, $active);
} while ($result == CURLM_CALL_MULTI_PERFORM || $active);
// 処理結果
foreach ($handles as $handle) {
$response = curl_multi_getcontent($handle);
// 応答データの処理
echo $response;
// 移除ハンドル并关闭 cURL
curl_multi_remove_handle($mh, $handle);
curl_close($handle);
}
// セッションを閉じます
curl_multi_close($mh);
?>
上記のコードは、最初にcurl_multi_init()を介して新しいCurlセッションを初期化します。次に、URLリストを定義し、リストをループし、 curl_init()を使用して各URLのCurl要求ハンドルを作成し、セッションに追加します。
次に、セッション内のすべてのCurlリクエストは、curl_multi_exec()を介して実行されます。リクエストが完了すると、各リクエストの応答データはcurl_multi_getContent()を介して取得され、さらに処理されます。最後に、 curl_multi_remove_handle()を使用してハンドルを削除し、 curl_close()を介して各curl要求を閉じ、最後にcurl_multi_close()を介してセッション全体を閉じます。
curl_multi_init()関数を使用することにより、PHPプログラムは複数のCurl要求を同時に処理することができ、特に複数のAPIリクエストが必要な場合、またはデータのバッチダウンロードが必要な場合に実行効率が向上します。
curl_multi_init()関数とその関連関数の使用を習得すると、PHPのネットワークリクエスト処理機能の改善に役立つだけでなく、並行リクエストとパフォーマンスの最適化の理解を深めます。
関連タグ:
cURL