멀티 스레드 또는 동시 요청 환경에서 CURL은 다른 컬 세션이 일부 리소스를 공유 할 수 있도록합니다. 예를 들어, curl_share_init 함수를 사용하여 공유 핸들을 생성하고 Curl_SetOpt를 통해 연결 풀 또는 쿠키를 공유하도록 여러 컬 요청을 구성하십시오. CurlShopt_unshare는 컬 세션 간의 리소스 공유를 취소하기위한 공유 핸들과 관련된 옵션입니다.
Curlshopt_unshare의 역할은 Curl이 더 이상 공유 자원을 사용하지 않음을 나타냅니다. 쿠키, 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 를 생성하고 공유 리소스 유형을 설정합니다. 예를 들어, 여기서는 쿠키 (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);
이 단계에서는 두 개의 컬 세션 $ CH1 과 $ CH2 를 생성하고 curl_setopt ($ ch, curlopt_share, $ sh) 를 통해 $ sh (예 : 공유 쿠키)의 리소스를 공유 할 수 있습니다. 이 시점에서 두 요청은 동일한 쿠키를 공유합니다.
어떤 경우에는 공해를 해제 해야하는 경우 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) 에 의해 공유 쿠키를 취소했습니다. 다음 컬 세션 (예 : $ CH3 )은 더 이상 이전 세션과 쿠키를 공유하지 않습니다.
Unshare 범위 : Curlshopt_unshare 취소 쿠키, DNS 또는 SSL과 같은 특정 유형의 리소스 만 공유합니다. 실제 요구에 따라 특정 리소스 유형의 공유를 취소하도록 선택할 수 있습니다.
공유 핸들의 수명주기 : 공유 리소스를 취소한다고해서 공유 핸들이 파괴되지는 않습니다. 더 이상 공유 핸들이 필요하지 않으면 curl_share_cleanup 함수를 통해 공유 핸들을 파괴 할 수 있습니다.
동시 요청의 영향 : 다중 스레드 또는 동시 요청의 경우 CurlShopt_Unshare의 합리적인 사용은 다른 요청간에 불필요한 데이터 공유를 피할 수 있으므로 시스템 유연성과 보안을 향상시킬 수 있습니다.
CurlShopt_unshare는 여러 컬 세션 간의 자원 공유를 취소하는 데 도움이되는 매우 실용적인 컬 옵션입니다. 공유 리소스를 구성하기 위해 Curl_share_init 및 Curl_SetOpt를 합리적으로 사용하여 리소스 사용을 효과적으로 관리 할 수 있습니다. 실제 응용 분야에서 요구에 따라 리소스 공유를 취소할지 여부를 결정하면 프로그램 유연성과 성능이 향상 될 수 있습니다.