curl_multi_remove_handle 함수는 여러 컬 핸들에서 별도의 컬 핸들을 제거하는 데 사용됩니다. 다중 컬 핸들을 사용하면 여러 요청을 동시에 실행할 수 있으며 여러 컬 핸들을 중앙에서 관리합니다. 요청이 완료되거나 더 이상 필요하지 않으면 Curl_multi_Remove_handle을 사용하여 여러 핸들에서 요청을 제거 할 수 있습니다.
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span> ( resource </span><span><span class="hljs-variable">$multi_handle</span></span><span> , resource </span><span><span class="hljs-variable">$ch</span></span><span> )
</span></span>$ multi_handle : CURL Multi-Handle Resource, 일반적으로 curl_multi_init () 에 의해 초기화 된 핸들.
$ CH : 제거 해야하는 별도의 컬 핸들 리소스, 일반적으로 curl_init () 에 의해 초기화 된 핸들.
이 함수의 반환 값은 부울 값으로, 성공하면 true를 반환하고 실패시 허위입니다 .
일반적으로 여러 컬 요청을 수행 할 때 Curl_multi_init ()을 사용하여 여러 컬 핸들을 초기화하고 Curl_multi_add_handle () 을 통해 여러 개의 별도의 컬 핸들을 추가합니다. 요청이 완료되거나 오류가 발생하면 여러 핸들에서 해당 별도의 핸들을 제거해야하며 curl_multi_remove_handle을 사용할 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 초기화 multi cURL 핸들</span></span><span>
</span><span><span class="hljs-variable">$multi_handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_init</span></span><span>();
</span><span><span class="hljs-comment">// 초기화两个单独的 cURL 핸들</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-variable">$ch2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>();
</span><span><span class="hljs-comment">// 첫 번째 요청을 설정하십시오 URL 그리고 다른 옵션</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/api/endpoint1'</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_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// 두 번째 요청을 설정하십시오 URL 그리고 다른 옵션</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.com/api/endpoint2'</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_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// 이 두 가지를 넣으십시오 cURL 핸들添加到 multi cURL 핸들中</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</span></span><span>, </span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</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-keyword">do</span></span><span> {
</span><span><span class="hljs-variable">$status</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_exec</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</span></span><span>, </span><span><span class="hljs-variable">$active</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$active</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">curl_multi_select</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</span></span><span>);
}
} </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$active</span></span><span> && </span><span><span class="hljs-variable">$status</span></span><span> == CURLM_OK);
</span><span><span class="hljs-comment">// 첫 번째를 제거하십시오 cURL 핸들</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</span></span><span>, </span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-comment">// 모두 닫으십시오 cURL 핸들</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_multi_close</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</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-meta">?></span></span><span>
</span></span>멀티 컬 핸들 초기화 : 먼저 Curl_multi_init ()를 사용하여 여러 핸들을 초기화하여 여러 요청을 관리합니다.
별도의 컬 핸들을 초기화하십시오. 그런 다음 두 개의 컬 핸들 Ch1 과 CH2 를 각각 두 개의 요청에 해당합니다.
요청 옵션 설정 : 각 개별 컬 핸들에 대한 요청 된 URL 및 리턴 데이터 옵션을 설정하십시오.
멀티 컬 핸들에 핸들을 추가하십시오 : curl_multi_add_handle ()을 사용하여 CH1 및 CH2를 여러 컬 핸들에 추가하여 동시에 실행할 수 있도록합니다.
요청 : curl_multi_exec ()를 사용하여 여러 핸들에 추가 된 모든 요청을 처리하고 실행하고 Curl_Multi_Select ()를 사용하여 요청이 완료 될 때까지 기다립니다.
컬 핸들 제거 : 요청이 완료되거나 더 이상 요청이 필요하지 않으면 Curl_Multi_Remove_Handle ()을 사용하여 여러 핸들에서 요청의 컬 핸들을 제거 할 수 있습니다.
핸들을 닫으십시오 : 마지막으로 여러 핸들과 모든 별도의 컬 핸들을 닫아 리소스를 확보하십시오.
제거 시간 : 해당 컬 핸들은 요청이 완료된 경우에만 제거해야하거나 요청이 더 이상 필요하지 않은지 확인해야합니다. 작업이 제거 된 후 해당 핸들은 더 이상 요청의 실행에 참여하지 않습니다.
리소스 릴리스 : 컬 핸들을 제거한 후에도 Curl_Close ()는 Curl_Close ()를 명시 적으로 호출하여 컬 리소스를 해제해야합니다 . 그렇지 않으면 메모리 누출이 발생할 수 있습니다.
동시성 제한 : 높은 동시 시나리오에서 Curl_multi_Remove_handle을 사용하면 여러 동시 요청을 효과적으로 관리하고 불필요한 핸들을 적시에 정리하고 불필요한 자원 점령을 피할 수 있습니다.