【PHP8.x】curl_multi_add_handle関数の使い方

作成日: 更新日:

curl_multi_add_handle関数は、PHPで複数のCURL通信を効率的に並行処理するために使用される関数です。この関数は、事前にcurl_multi_init()で初期化された「マルチCURLハンドル」に、curl_init()で作成された「単一のCURLハンドル」を追加する役割を担います。

Webアプリケーション開発において、複数の外部APIに同時にリクエストを送信したり、多数のWebサイトから情報を並行して取得したりする場面があります。このような場合、通常のリクエストを一つずつ順に実行すると、前のリクエストの完了を待つ必要があり、処理時間が長くなってしまいます。curl_multi_add_handle関数を用いることで、複数の単一CURLハンドルを一つのマルチCURLハンドルにまとめて登録し、curl_multi_exec()関数で一括して実行することが可能になります。これにより、ネットワークの待ち時間を有効活用し、アプリケーション全体のパフォーマンスを向上させることができます。

具体的には、第一引数にcurl_multi_init()が返したマルチCURLリソースを、第二引数にはcurl_init()が返した単一CURLリソースを指定します。関数が成功すると0が返され、失敗した場合はメモリ不足を示すCURLM_OUT_OF_MEMORYのようなCURLMエラーコードが返されます。追加された単一CURLハンドルは、その後curl_multi_exec()curl_multi_select()といった関数と組み合わせて非同期通信に利用されます。

基本的な使い方

構文(syntax)

<?php
$multi_handle = curl_multi_init();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_multi_add_handle($multi_handle, $ch);

curl_multi_remove_handle($multi_handle, $ch);
curl_close($ch);
curl_multi_close($multi_handle);
?>

引数(parameters)

CurlMultiHandle $multi_handle, CurlHandle $handle

  • CurlMultiHandle $multi_handle: 複数のCurlセッションを管理するためのリソース
  • CurlHandle $handle: 追加する単一のCurlセッションリソース

戻り値(return)

int

curl_multi_add_handle関数は、指定されたcURLハンドルをマルチハンドルに追加できたかどうかを示す整数値を返します。成功した場合はCURLE_OK(通常は0)を、失敗した場合はエラーコードを返します。

【PHP8.x】curl_multi_add_handle関数の使い方 | いっしー@Webエンジニア