[PHP]curl_multi_setopt: cURL マルチハンドルのオプション設定

PHP

curl_multi_setopt は、PHP の cURL 拡張機能に含まれる関数で、cURL マルチハンドルのオプションを設定するために使用されます。この関数を使用することで、複数の cURL 転送を同時に管理する際の様々な動作を制御することができます。

関数のシグネチャ:

bool curl_multi_setopt ( resource $mh , int $option , mixed $value )

主な特徴と使用方法:

  1. 機能:
    • cURL マルチハンドルの動作を制御するオプションを設定します。
    • 個々の cURL ハンドルではなく、マルチハンドル全体に適用されるオプションを設定します。
  2. パラメータ:
    • $mh: curl_multi_init() で作成された cURL マルチハンドル
    • $option: 設定するオプション(CURLMOPT_* 定数を使用)
    • $value: オプションに設定する値
  3. 戻り値:
    • 成功時は true
    • 失敗時は false
  4. 主なオプション:
    • CURLMOPT_PIPELINING: HTTP/1.1 パイプラインまたは HTTP/2 マルチプレキシングを有効/無効にする
    • CURLMOPT_MAXCONNECTS: キャッシュする同時接続の最大数
    • CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE: チャンク転送のペナルティサイズ
    • CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE: コンテンツ長のペナルティサイズ
    • CURLMOPT_MAX_HOST_CONNECTIONS: ホストごとの最大同時接続数
    • CURLMOPT_MAX_PIPELINE_LENGTH: パイプラインの最大長
    • CURLMOPT_MAX_TOTAL_CONNECTIONS: 同時接続の最大総数
  5. 使用例:
$mh = curl_multi_init();

// HTTP/2 マルチプレキシングを有効にする
curl_multi_setopt($mh, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);

// ホストごとの最大同時接続数を5に設定
curl_multi_setopt($mh, CURLMOPT_MAX_HOST_CONNECTIONS, 5);

// 同時接続の最大総数を10に設定
curl_multi_setopt($mh, CURLMOPT_MAX_TOTAL_CONNECTIONS, 10);

// ... ハンドルの追加と実行
  1. 注意点:
    • 全てのオプションが全てのシステムやlibcurlのバージョンでサポートされているわけではありません。
    • 一部のオプションは、libcurlがそれらをサポートするようにビルドされている場合にのみ利用可能です。
  2. メリット:
    • パフォーマンスの最適化: 接続数やパイプラインの制御により、リソース使用を最適化できます。
    • 柔軟な設定: 様々なシナリオに応じて cURL の動作を細かく調整できます。

curl_multi_setopt は、複数の cURL 転送を同時に管理する際に、その動作を細かく制御するための強力なツールです。特に大規模なウェブスクレイピングや並列API呼び出しなど、多数の HTTP リクエストを効率的に処理する必要がある場合に非常に有用です。

タイトルとURLをコピーしました