PHP에서 Curl을 사용하는 경우 Curl_multi_* 기능은 종종 여러 CURL 요청을 동시에 실행하는 데 사용됩니다. 효율적인 코드 실행을 보장하려면 특히 CURL_MULTI_CLOSE 기능을 호출 할 때 멀티 스레드 컬 세션을 올바르게 닫는 것이 중요합니다. 이 기사는 Curl_Multi_Close를 올바르게 사용하여 자원을 철저히 정리하고 메모리 누출 및 파일 핸들 누출을 피하는 방법을 올바르게 사용하는 방법을 소개합니다.
PHP에서 Curl_multi_* 함수는 여러 컬 세션을 병렬로 관리하는 데 사용됩니다. Curl_multi_Close 는 멀티 스레드 컬 세션을 닫고 관련 리소스를 자유롭게하는 데 사용되는 매우 중요한 기능 중 하나입니다. 기본 기능은 자원 누출을 피하기 위해 Curl_multi_init 으로 생성 된 모든 컬 세션 리소스를 파괴하는 것입니다.
여러 컬 세션을 초기화하십시오
먼저 Curl_init 으로 여러 컬 세션을 초기화하고 Curl_multi_handle 에 추가해야합니다. curl_multi_init 함수는 모든 서브 세션을 관리하는 CURL 멀티 핸들을 만드는 데 사용됩니다.
$multi_handle = curl_multi_init();
$ch1 = curl_init("https://gitbox.net/api/resource1");
$ch2 = curl_init("https://gitbox.net/api/resource2");
curl_multi_add_handle($multi_handle, $ch1);
curl_multi_add_handle($multi_handle, $ch2);
여러 요청을 수행하십시오
curl_multi_exec을 사용하여 이러한 요청을 병렬로 실행하십시오. 모든 요청이 완료 될 때까지 함수가 실행됩니다.
do {
$mrc = curl_multi_exec($multi_handle, $active);
} while ($active);
여러 핸들을 닫습니다
모든 CURL 요청이 완료된 후에는 Curl_Multi_Close를 호출하여 여러 핸들을 닫고 모든 관련 리소스를 해제해야합니다. 메모리 누출을 방지하기 위해 각 핸들이 닫혔는지 확인하십시오.
curl_multi_remove_handle($multi_handle, $ch1);
curl_multi_remove_handle($multi_handle, $ch2);
curl_multi_close($multi_handle);
curl_multi_close를 호출하는 것은 멀티 스레드 요청 중에 할당 된 모든 자원이 올바르게 해제 될 수 있도록하기 때문에 매우 중요합니다. Curl_multi_Close가 호출되지 않으면 특히 장기 스크립트 또는 서비스에서 자원 누출이 발생할 수 있습니다. 시스템 리소스가 지속적으로 소비되어 시스템 성능이 줄어 듭니다.
각 개별 컬 핸들을 닫습니다
여러 핸들을 닫기 전에 먼저 curl_multi_remove_handle을 통해 모든 클론 핸들을 제거한 다음 Curl_Multi_Close를 호출해야합니다.
curl_multi_remove_handle($multi_handle, $ch1);
curl_multi_remove_handle($multi_handle, $ch2);
curl_close($ch1);
curl_close($ch2);
활성 세션이 없는지 확인하십시오
curl_multi_close를 호출하기 전에 모든 요청이 완료되었는지 확인하고 curl_multi_exec 의 반환 상태는 curlm_ok 여야합니다. 요청이 완료되지 않은 경우 세션을 종료하려고 시도하지 않습니다.
do {
$mrc = curl_multi_exec($multi_handle, $active);
} while ($active);
정기적으로 자원을 확인하십시오
개발 중에 CURL 리소스가 특히 루프에서 또는 많은 동시 요청을 처리 할 때 올바르게 컬링 자원이 릴리스되는지 정기적으로 확인하는 것이 중요합니다. 과도한 메모리 소비가 발생하면 Memory_get_usage () 와 같은 함수를 사용하여 문제를 해결할 수 있습니다.
Curl_multi_Close 의 올바른 사용은 PHP 응용 프로그램이 효율적이고 메모리가없는 상태로 실행되도록하는 중요한 단계입니다. 컬 세션의 생성 및 파괴를 합리적으로 관리함으로써 자원 누출 문제를 효과적으로 피할 수 있습니다. 특히 여러 동시 요청을 처리 할 때 여러 핸들을 올바르게 폐쇄하면 시스템 안정성과 성능이 크게 향상 될 수 있습니다.