PHPでは、Curlは非常に強力なライブラリであり、他のサーバーでHTTP要求を行うことができます。 Curlは、単一のリクエストを処理するだけでなく、複数のリクエスト間のリソース共有もサポートします。 curl_share_init()とcurl_setopt()関数を組み合わせることにより、ファイルハンドル、DNSキャッシュ、SSLセッションなど、複数のCurlセッション間でいくつかのリソースを共有することができます。これにより、同時リクエストの効率が大幅に向上します。
この記事では、curl_share_init()およびcurl_setopt()関数を使用して、複数のCurlセッションのリソースを共有して、同時リクエストを効果的に管理する方法を紹介します。
CURLセッション共有とは、キャッシュされたDNS情報やSSLセッションデータなど、複数のCurl要求が特定のリソースを共有する機能を指します。複数の同様のリクエストがある場合、セッション共有を有効にすると、各リクエストのDNSの再確立または再解決を防ぐことができ、パフォーマンスが向上します。
curl_share_init()関数は、共有リソースオブジェクトを初期化するために使用されます。オブジェクトは共有ハンドルに保存され、複数のカールセッションが共有できるようにします。 curl_setopt()関数は、共有リソースに関連する設定を含む、Curlセッションでさまざまなオプションを構成するために使用されます。
curl_share_init()を使用して、共有リソースを初期化します。これにより、その後のカールセッションがリソースを共有できる共有オブジェクトが作成されます。
$ch1 = curl_init();
$ch2 = curl_init();
// 共有リソースを初期化します
$share = curl_share_init();
// 共有リソースを設定します
curl_share_setopt($share, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS); // 共有 DNS キャッシュ
curl_share_setopt($share, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION); // 共有 SSL セッション
curl_setopt()を使用して、curlセッションのオプションを設定します。次に、共有リソースオブジェクトは、curl_setopt()を介して各curlセッションにバインドされます。
// 最初のものを設定します cURL セッション的选项
curl_setopt($ch1, CURLOPT_URL, 'https://m66.net/path1'); // 置き換えます m66.net ドメイン名
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_SHARE, $share); // 绑定共有资源
// 2番目のものを設定します cURL セッション的选项
curl_setopt($ch2, CURLOPT_URL, 'https://m66.net/path2'); // 置き換えます m66.net ドメイン名
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_SHARE, $share); // 绑定共有资源
// 複数を実行します cURL セッション
$response1 = curl_exec($ch1);
$response2 = curl_exec($ch2);
// 処理応答
echo $response1;
echo $response2;
リクエストが完了したら、共有リソースとカールセッションをリリースすることを忘れないでください。
// 閉鎖 cURL セッション
curl_close($ch1);
curl_close($ch2);
// 释放共有资源
curl_share_close($share);
DNSおよびSSLセッションの共有に加えて、ニーズに応じて他のリソースを共有できます。共有リソースの一般的なタイプは次のとおりです。
curl_lock_data_cookie :Cookieデータを共有します。
curl_lock_data_ssl_session :SSLセッションを共有します。
curl_lock_data_dns :共有DNSキャッシュ。
curl_share_setopt()を使用して、対応するオプションを設定して、これらの共有リソースを有効にします。
curl_share_init()およびcurl_setopt()を使用することにより、複数のCurlセッション間でリソースを簡単に共有できるため、リクエストの効率が向上します。特に、多くの同時リクエストがある場合、リソース共有をオンにすると、リソースの重複を回避し、応答速度が向上します。 Curl_share_close()を呼び出すことにより、使用後に共有された各リソースオブジェクトをリリースする必要があることを忘れないでください。
この記事が、Curlの共有メカニズムを使用して複数のセッションを管理する方法を理解するのに役立つことを願っています。