현재 위치: > 최신 기사 목록> [PHP에서 curl_share_init 함수를 사용하는 방법은 무엇입니까? 하나의 기사 가이 공유 핸들 기능을 신속하게 시작하게됩니다.

[PHP에서 curl_share_init 함수를 사용하는 방법은 무엇입니까? 하나의 기사 가이 공유 핸들 기능을 신속하게 시작하게됩니다.

gitbox 2025-07-12

네트워크 요청에 PHP를 사용할 때 CURL은 다른 서버 HTTP와 통신 할 수있는 매우 일반적인 라이브러리입니다. 그러나 일부 시나리오에서는 여러 컬 핸들간에 일부 리소스 (예 : 쿠키, 파일 설명자 등)를 공유해야 할 수도 있습니다. 이 시점에서 curl_share_init 함수는 편리합니다.

curl_share_init 란 무엇입니까?

curl_share_init () 는 공유 핸들을 초기화하는 데 사용되는 PHP CURL 기능입니다. 이 공유 핸들은 여러 컬 세션에서 공유 할 수 있으므로 세션의 쿠키, DNS 쿼리 결과, 파일 설명자 등과 같은 특정 리소스를 공유 할 수 있습니다.

curl_share_init ()를 사용하면 여러 요청간에 동일한 리소스의 반복적 인로드를 피할 수 있으며 성능 향상 및 시스템 간접비를 줄일 수 있습니다. 이 함수는 공유 핸들을 반환 한 다음 다른 함수 (예 : Curl_Setopt )를 통해 공유 핸들과 관련된 매개 변수를 구성하고 마지막으로 curl_share_close 를 통해 공유 핸들을 해제 할 수 있습니다.

기본 구문

 <span><span><span class="hljs-variable">$share</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_share_init</span></span><span>();
</span></span>

이 기능이 호출되면 공유 핸들 $ 주식을 반환하여 여러 컬 세션간에 리소스를 공유합니다. 이 핸들을 사용하여 공유 리소스의 동작을 설정할 수 있습니다.

curl_share_setopt 함수

공유 핸들이 성공적으로 초기화되면 curl_share_setopt를 사용하여 여러 세션간에 공유 할 수있는 리소스를 설정할 수 있습니다. 일반적으로 사용되는 공유 리소스는 다음과 같습니다.

  • Curlopt_share : 공유 할 리소스를 설정하는 데 사용됩니다. CurlShopt_share를 지정하여 리소스를 공유하거나 CurlShopt_unshare를 공유 할 수 있습니다.

공유 리소스 유형

  • CurlShopt_share (공유 쿠키) : 여러 세션에서 동일한 쿠키 데이터를 공유합니다.

  • CurlShopt_share (공유 DNS) : 다중 세션은 동일한 DNS 해상도 캐시를 공유합니다.

  • curlshopt_share (공유 파일 디스크립터) : 공유 파일 디스크립터, 동일한 파일을 읽어야 할 때 여러 컬 세션에 적합합니다.

샘플 코드

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 공유 핸들을 초기화하십시오</span></span><span>
</span><span><span class="hljs-variable">$share</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_share_init</span></span><span>();

</span><span><span class="hljs-comment">// 공유 리소스를 설정합니다(예를 들어 공유cookie)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_share_setopt</span></span><span>(</span><span><span class="hljs-variable">$share</span></span><span>, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);

</span><span><span class="hljs-comment">// 초기화cURL핸들1</span></span><span>
</span><span><span class="hljs-variable">$ch1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>, CURLOPT_URL, </span><span><span class="hljs-string">'http://example.com'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>, CURLOPT_SHARE, </span><span><span class="hljs-variable">$share</span></span><span>);

</span><span><span class="hljs-comment">// 초기화cURL핸들2</span></span><span>
</span><span><span class="hljs-variable">$ch2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>, CURLOPT_URL, </span><span><span class="hljs-string">'http://example.org'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>, CURLOPT_SHARE, </span><span><span class="hljs-variable">$share</span></span><span>);

</span><span><span class="hljs-comment">// 구현하다cURL묻다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_exec</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_exec</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>);

</span><span><span class="hljs-comment">// 폐쇄cURL핸들</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>);

</span><span><span class="hljs-comment">// 폐쇄共享핸들</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_share_close</span></span><span>(</span><span><span class="hljs-variable">$share</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

위의 예에서는 공유 핸들 $ 공유를 초기화하고 쿠키 데이터를 공유하도록 구성합니다. 다음으로, 우리는 두 개의 컬 핸들 $ CH1$ CH2 를 생성하고 동일한 공유 핸들을 공유하도록 설정합니다. 마지막으로, 요청을 실행하고 공유 핸들뿐만 아니라 모든 컬 핸들을 닫으십시오.

시나리오를 사용하십시오

Curl_share_init은 여러 CURL 요청간에, 특히 다음 시나리오에서 리소스를 공유 할 때 매우 유용합니다.

  1. 여러 요청에 따른 쿠키 공유 : 여러 HTTP 요청을 실행 중이며 해당 요청이 동일한 세션 (예 : 로그인 후 세션 상태)을 유지 해야하는 경우 쿠키를 공유 할 수 있습니다.

  2. 공유 DNS 해결 : 여러 네트워크 요청을 작성하고 이러한 요청에 대한 대상 서버가 동일한 도메인 이름 아래에 있으면 DNS 공유를 가능하게하면 DNS 해상도의 오버 헤드가 줄어 듭니다.

  3. 공유 파일 설명자 : 공유 파일 설명자는 동일한 파일 리소스에 대한 여러 요청을 읽어야 할 때 파일 읽기 효율을 최적화하는 데 도움이됩니다.

주목해야 할 것

  1. 동시 실행 : 여러 컬 세션이 동일한 공유 핸들을 공유 할 때 경주 조건을 피하기위한 동시 요청의 논리를 처리하십시오. 예를 들어, 컬 세션은 공유 리소스에 동시에 액세스 할 수 있으며 스레드 안전이어야합니다.

  2. 공유 리소스 제한 : Curl_share_init은 리소스를 공유 할 수있는 기능을 제공하지만 모든 자원을 공유 할 수있는 것은 아닙니다. 컬이 지원하는 공유 리소스의 유형을 이해하는 것이 중요합니다.

  3. 공유 핸들의 수명주기 : 공유 핸들은 여러 컬 세션간에 자원을 공유하므로 자원이 올바르게 해제되도록 모든 컬 세션이 실행 된 후에 만 닫아야합니다.

요약

CURL_SHARE_INIT는 PHP의 CURL에 대한 효율적인 리소스 공유 메커니즘을 제공합니다. 특히 여러 HTTP 요청간에 일부 리소스를 공유 해야하는 시나리오에 적합합니다. 공유 핸들을 합리적으로 사용하면 중복 워크로드를 줄이고 프로그램 성능을 향상시킬 수 있습니다. curl_share_init 의 사용을 마스터하는 것은 컬 작업의 유연성과 효율성을 향상시키는 데 큰 도움이됩니다.