現在の位置: ホーム> 最新記事一覧> curl_share_init()を使用して複数のcurl要求間でリソースを共有する方法

curl_share_init()を使用して複数のcurl要求間でリソースを共有する方法

M66 2025-05-18

PHPでは、CurlはHTTPリクエストを送信してリモートデータを取得するための非常に強力なライブラリです。通常、各カール要求は独立して初期化および構成する必要がありますが、場合によっては、複数のリクエスト間で特定のリソース(接続、セッションなど)を共有すると、パフォーマンスを大幅に改善できます。この時点で、 curl_share_init()関数は便利です。複数のCurl要求の間でいくつかのリソースを共有し、それにより、繰り返される接続確立のオーバーヘッドを削減し、リクエストの効率を改善することができます。

curl_share_init()関数とは何ですか?

curl_share_init()関数は、複数のCurl要求間でデータを共有するための共有リソースハンドルを初期化するために使用されます。通常、 curl_share_setopt()で使用され、共有接続、Cookie、DNSなどの共有リソースタイプを設定できます。

この関数の基本的な構文は次のとおりです。

 $ch = curl_share_init();

curl_share_init()関数は、後続の共有設定とマルチリクエスト操作に使用できる共有リソースハンドルを返します。

なぜcurl_share_init()を使用するのですか?

  1. 接続のオーバーヘッドを削減する:複数のリクエストが同じドメイン名またはサーバーにアクセスする場合、共有リソースを使用すると、接続の作成の作成を避け、ネットワークの遅延とリソースの消費を削減できます。

  2. 共有セッションデータ:たとえば、Cookie、DNS、ファイル記述子などの共有リソースは、各要求がこれらのコンテンツを個別に処理できないようにし、リクエスト効率を向上させることができます。

  3. パフォーマンスの向上:特に多数のリクエストの場合、重複する接続の作成と破壊を減らすことにより、アプリケーションのパフォーマンスを改善します。

curl_share_init()の使用方法は?

以下は、curl_share_init()を使用して複数のCurl要求の間でリソースを共有してリクエスト効率を改善する方法を示す簡単な例です。

 <?php
// 共有リソースを初期化します
$share = curl_share_init();

// 共有オプションを設定します,共有されている場合 cookies
curl_share_setopt($share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);

// 複数を初期化します cURL 聞く
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://m66.net/api/data1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_SHARE, $share);  // リソースを共有します

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://m66.net/api/data2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_SHARE, $share);  // リソースを共有します

// 执行聞く
$response1 = curl_exec($ch1);
$response2 = curl_exec($ch2);

// 关闭聞く
curl_close($ch1);
curl_close($ch2);

// 关闭リソースを共有します
curl_share_close($share);

// 応答データの処理
echo "Response 1: " . $response1 . "\n";
echo "Response 2: " . $response2 . "\n";
?>

コード解析

  1. 共有リソースの初期化CURL_SHARE_INIT()を呼び出すことにより、共有リソースのハンドル$共有を作成します。これは、その後の共有操作の基礎です。

  2. 共有オプションの設定curl_share_setopt()を使用して、共有リソースタイプを設定します。この例では、共有Cookieデータを設定します。

  3. 複数のCurlリクエストの初期化:それぞれ$ CH1CH2の2つのCurl要求を作成し、異なるAPIインターフェイスにアクセスするように設定します。 curlopt_shareオプションを介して、両方のリクエストが共有リソースハンドル$ shareを使用する必要があることをCurlに伝えます。

  4. リクエストを実行する:2つのリクエストを個別に実行し、返された応答を$ response1および$ response2に保存します。

  5. リクエストの閉鎖リソースと共有リソース:すべてのリクエストが完了したら、 curl_close()を呼び出してcurl要求を閉じ、最後にcurl_share_close()を呼び出して共有リソースを閉じます。

curl_share_init()の一般的なオプション

curl_share_setopt()を使用して共有リソースをセットアップする際の一般的な共有オプションを次に示します。

  • curl_lock_data_cookie :Cookieを共有します。

  • curl_lock_data_dns :DNSデータを共有します。

  • curl_lock_data_ssl_session :SSLセッションを共有します。

アプリケーションのシナリオに応じて、適切な共有オプションを選択すると、パフォーマンスを効果的に改善できます。

まとめ

curl_share_init()関数を介して、PHP開発者は複数のCurl要求間でリソースを共有することができ、それにより、接続の重複の作成を削減し、リクエスト効率を改善できます。同時リクエストが高いシナリオでは、共有リソースを使用すると、サーバーの負荷が大幅に削減され、システムのパフォーマンスが向上します。したがって、 curl_share_init()を使用して習得して合理的に使用することは、Curl要求を最適化するための重要なスキルです。