[PHP]curl_pause: cURL 転送の一時停止と再開

PHP

curl_pause は PHP の cURL 拡張機能に含まれる関数で、進行中の cURL 転送を一時的に停止したり再開したりするために使用されます。この関数を使用することで、ダウンロードやアップロードの進行を制御することができます。

関数のシグネチャ:

int curl_pause ( resource $ch , int $bitmask )

主な特徴と使用方法:

  1. 機能:
    • 指定された cURL ハンドルの転送を一時停止または再開します。
    • 送信(アップロード)と受信(ダウンロード)を個別に制御できます。
  2. パラメータ:
    • $ch: curl_init() で初期化された cURL ハンドル
    • $bitmask: 停止または再開する動作を指定するビットマスク
      • CURLPAUSE_RECV: 受信を一時停止/再開
      • CURLPAUSE_SEND: 送信を一時停止/再開
      • CURLPAUSE_ALL: 送受信両方を一時停止/再開
      • CURLPAUSE_CONT: 一時停止を解除し、転送を再開
  3. 戻り値:
    • 成功時は CURLE_OK (通常は整数の 0)
    • エラー時はエラーコード
  4. 使用例:
$ch = curl_init('http://example.com/large_file.zip');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 転送を開始
curl_exec($ch);

// ダウンロードを一時停止
curl_pause($ch, CURLPAUSE_RECV);

// ... 何らかの処理 ...

// ダウンロードを再開
curl_pause($ch, CURLPAUSE_CONT);

// 転送を完了
$result = curl_exec($ch);

curl_close($ch);
  1. 主な用途:
    • 大きなファイルのダウンロードやアップロードの制御
    • 帯域幅の管理
    • ユーザーインターフェースの応答性向上(一時停止中に他の処理を実行可能)
  2. 注意点:
    • この関数は cURL 7.18.0 以降で利用可能です。
    • 一時停止した転送を再開する際は、CURLPAUSE_CONT を使用します。
    • マルチハンドル (curl_multi) を使用している場合、個々のハンドルに対して curl_pause を呼び出すことができます。
  3. メリット:
    • 柔軟な転送制御: 必要に応じて転送を一時停止し、後で再開できます。
    • リソース管理: 帯域幅やシステムリソースの使用を制御できます。
    • ユーザー体験の向上: 長時間の転送中にユーザーに制御を与えることができます。

curl_pause は、特に大きなファイルの転送や、転送の進行を細かく制御する必要がある場合に非常に有用です。この関数を使用することで、より柔軟で効率的な cURL 転送の管理が可能になります。

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