現在の位置: ホーム> 最新記事一覧> curl_closeとcurl_multi_closeと使用シナリオの違い

curl_closeとcurl_multi_closeと使用シナリオの違い

gitbox 2025-05-26

Curl_Closeは、Curlセッションを閉じるために使用される関数です。 Curl_initでCurlセッションが初期化されるたびに、Curlリソースが返されます。このリソースは、リクエストが完了した後、 curl_closeを介してリリースする必要があります。リソースが時間内に閉じられていない場合、メモリの漏れやリソースの無駄につながる可能性があります。

 <?php
$ch = curl_init('http://gitbox.net/example'); // 初期化 cURL セッション
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 戻りコンテンツを文字列に設定します
$response = curl_exec($ch); // 埋め込む cURL 聞く
curl_close($ch); // 閉鎖 cURL セッション,無料のリソース
?>

上記の例では、 curl_closeを使用して、 curl_initによって初期化されたセッションを閉じて、リソースが解放されるようにします。この関数は通常、リクエストが完了した直後に呼び出され、リソースのタイムリーなクリーンアップを確保します。

curl_multi_close関数の役割

curl_multi_closeは、複数のCurlセッションを閉じるために使用される関数です。これは、curl_multi_*一連の関数で使用され、複数のCurl要求が同時に実行されるシナリオに適しています。 curl_multi_initを使用してCurl Multi-handleリソースを作成した後、 curl_multi_add_handleを介してマルチハンドルに複数のCurlセッションを追加し、 curl_multi_execで複数のリクエストを実行および監視できます。操作を完了したら、 curl_multi_closeを使用してマルチハンドル全体を閉じる必要があります。

 <?php
// 初期化多个 cURL セッション
$mh = curl_multi_init();

$ch1 = curl_init('http://gitbox.net/example1');
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch1);

$ch2 = curl_init('http://gitbox.net/example2');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);

// 埋め込む多聞く
do {
    $status = curl_multi_exec($mh, $active);
} while ($active);

// 閉鎖所有セッション
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>

この例では、 curl_multi_closeを使用して、マルチハンドルに追加されたすべてのCurlセッションを閉じ、関連するリソースをリリースします。

curl_closeとcurl_multi_closeの違い

  1. さまざまなアプリケーションの範囲

    • Curl_Closeは、単一のCurlセッションリソースにのみ適用できます。 1つのリクエストのみを処理する必要がある場合は、 Curl_Closeを使用してリクエストを閉じることができます。

    • curl_multi_closeは、複数のCurl要求が同時に処理されるシナリオに適しています。マルチハンドルリソースを閉じて、それに関連するすべてのカールセッションをリリースします。

  2. リソースリリース

    • Curl_Closeは、単一のCurlセッションを解放するために使用されるリソースであり、処理するときに1つずつクリーンアップするのに適しています。

    • curl_multi_closeは、マルチレクエストリソースのリリースに使用され、同時リクエストの処理時にクリーンアップに適しています。

  3. パフォーマンスの違い

    • Curl_Closeは、パフォーマンスのオーバーヘッドが少なく、1つずつリクエストを閉じることです。

    • curl_multi_closeは、複数のリクエストを閉じるときに複数のセッションを処理する必要があり、パフォーマンスオーバーヘッドは比較的大きいですが、複数のリクエストが同時に実行される場合のリソースクリーニングに適しています。

curl_closeとcurl_multi_closeの使用に適したシナリオはどれですか?

  • curl_closeを使用したシナリオ

    • 単一のHTTPリクエストを開始する必要がある場合は、 curl_closeを使用してリソースを解放します。

    • いくつかの簡単なAPIリクエストや単一のWebページのrawりに適しています。

  • curl_multi_closeを使用したシナリオ

    • 複数のHTTPリクエストを同時に実行する必要がある場合は、 curl_multi_closeを使用してマルチリクエストリソースを解放します。

    • バッチデータがクロールまたは複数の異なるURLを同時に要求するのに適しています。

    • curl_multi_*関数の組み合わせは、バッチクロールや複数のAPI要求の送信などの高い並行性タスクを処理する際に、効率を大幅に改善できます。

要約します

curl_closeおよびcurl_multi_closeは、両方ともCurlセッションと無料リソースを閉じるために使用されますが、さまざまなシナリオに適用できます。 curl_closeは単一の要求ケースに適していますが、 curl_multi_closeは同時リクエストケースに適しています。実際の開発では、ニーズに応じて適切な関数を選択すると、コードの効率を改善し、リソースの消費を減らすことができます。