マルチスレッドまたは同時リクエスト環境では、Curlを使用すると、さまざまなCurlセッションがリソースを共有できます。たとえば、curl_share_init関数を使用して共有ハンドルを作成し、複数のcurl要求を構成して、curl_setoptを介して接続プールまたはCookieを共有します。 Curlshopt_unshareは、Curlセッション間でリソース共有をキャンセルするための共有ハンドルに関連するオプションです。
Curlshopt_unshareの役割は、Curlが共有リソースを使用しなくなったことを示すことです。 Cookie、DNS、SSLなどのさまざまなリソースに適用できます。このオプションを使用すると、各リクエストが独立して実行できるように、ニーズに基づいて複数のリクエストを解除できます。
まず、curl_share_init関数を使用して共有リソースハンドルを初期化する必要があります。次に、curl_setopt関数を介してリソースの共有を構成し、最後にcurlshopt_unshareを介して共有をキャンセルします。
// 共有ハンドルを初期化します
$sh = curl_share_init();
// 共有リソースタイプを設定します(共有されている場合 Cookie)
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
このステップでは、共有ハンドル$ shを作成し、共有リソースタイプを設定します。たとえば、Cookie(curl_lock_data_cookie)を共有することを選択します。
// 初期化 cURL セッション 1
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, 'http://m66.net/page1');
curl_setopt($ch1, CURLOPT_SHARE, $sh);
// 初期化 cURL セッション 2
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, 'http://m66.net/page2');
curl_setopt($ch2, CURLOPT_SHARE, $sh);
// リクエストを実行します
curl_exec($ch1);
curl_exec($ch2);
このステップでは、2つのCurlセッション$ CH1と$ CH2を作成し、 Curl_Setopt($ ch、curlopt_share、$ sh)を介して$ sh (share cookieなど)でリソースを共有できるようにします。この時点で、2つのリクエストは同じCookieを共有しています。
場合によっては、シェアを解除する必要がある場合は、curlshopt_unshareを使用できます。
// 共有をキャンセルします Cookie
curl_share_setopt($sh, CURLSHOPT_UNSHARE, CURL_LOCK_DATA_COOKIE);
// 新しいものを作成します cURL セッション,独立したリソース
$ch3 = curl_init();
curl_setopt($ch3, CURLOPT_URL, 'http://m66.net/page3');
curl_exec($ch3);
このステップでは、 curl_share_setopt($ sh、curlshopt_unshare、curl_lock_data_cookie)で共有Cookieをキャンセルしました。次のカールセッション( $ CH3など)は、前のセッションとCookieを共有しなくなります。
UN -Share Scope :curlshopt_unshareは、Cookie、DNS、SSLなどの特定の種類のリソースのみを共有するキャンセルをキャンセルします。実際のニーズに応じて、特定のリソースタイプの共有をキャンセルすることを選択できます。
共有ハンドルのライフサイクル:共有リソースをキャンセルしても、共有ハンドルは破壊されません。共有ハンドルが必要ない場合は、curl_share_cleanup関数を介して共有ハンドルを破壊できます。
同時リクエストの影響:マルチスレッドまたは同時リクエストの場合、CURLSHOPT_UNSHAREの合理的な使用は、異なる要求間の不必要なデータ共有を回避し、それによりシステムの柔軟性とセキュリティが改善されます。
Curlshopt_unshareは、複数のCurlセッション間でリソース共有をキャンセルするのに役立つ非常に実用的なCurlオプションです。 Curl_share_initおよびcurl_setoptを合理的に使用して共有リソースを構成することにより、リソースの使用を効果的に管理できます。実際のアプリケーションでは、ニーズに基づいて共有リソースをキャンセルするかどうかを決定することで、プログラムの柔軟性とパフォーマンスを向上させることができます。