현재 위치: > 최신 기사 목록> curl_multi_close 실행시 모든 핸들의 상태를 확인해야합니까?

curl_multi_close 실행시 모든 핸들의 상태를 확인해야합니까?

gitbox 2025-05-12

php의 curl_multi_* 시리즈 함수를 사용할 때 Curl_multi_close는 Curl_multi_init 에 의해 생성 된 핸들을 닫는 데 사용됩니다. 그러나 Curl_multi_Close 에게 전화하기 전에 많은 개발자들이 혼란 스러울 것입니다.

대답은 일반적으로 필요하지 않지만 자원을 합리적으로 관리하는 것은 여전히 ​​좋은 습관입니다.

curl_multi_close 의 동작을 이해하십시오

공식 PHP 문서에 따르면 Curl_Multi_Close 의 기능은 CURL 멀티 핸들을 파괴하고 멀티 핸들과 관련된 리소스를 자동으로 해제하는 것입니다. 그러나 Curl_Init 에 의해 생성 된 개별 컬 핸들을 자동으로 닫고 멀티 핸들에 추가하지는 않습니다 . curl_multi_close를 호출하기 전에 curl_close를 사용하여 각 개별 컬 핸들을 수동으로 닫아야합니다.

그렇지 않은 경우, 이러한 별도의 컬 핸들은 여전히 ​​메모리 리소스를 차지하므로 메모리 누출이 발생할 수 있습니다.

올바른 리소스 관리 예제

다음은 다중 핸들과 단일 컬 핸들을 올바르게 관리하는 PHP 예입니다.

 <?php

// 다중 초기화 curl 핸들
$ch1 = curl_init('https://gitbox.net/api/endpoint1');
$ch2 = curl_init('https://gitbox.net/api/endpoint2');

// a curl_multi 핸들
$mh = curl_multi_init();

// 添加핸들到 multi handle
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);

// 구현하다
$running = null;
do {
    curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0);

// 移除핸들
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);

// 关闭单个핸들
curl_close($ch1);
curl_close($ch2);

// 마지막으로 multi handle
curl_multi_close($mh);
?>

위 코드에서 :

  1. 먼저 curl_multi_remove_handle을 사용하여 멀티 핸들에서 단일 핸들을 제거하십시오.

  2. 그런 다음 curl_close는 각 컬 핸들을 개별적으로 닫습니다.

  3. 마지막으로 Curl_multi_Close를 사용하여 멀티 핸들 자체를 닫으십시오.

이를 통해 레거시 핸들이나 메모리 누출없이 모든 리소스가 올바르게 릴리스되도록합니다.

요약

  • curl_multi_close 는 멀티 핸들 자체의 파괴를 담당합니다.

  • 단일 컬 핸들은 수동으로 닫아야합니다.

  • 핸들의 "상태"를 확인할 필요는 없지만 각 개별 컬 핸들이 제거되고 닫혀 있는지 확인해야합니다.

  • 좋은 자원 관리 습관을 개발하는 것은 메모리 누출과 시스템 자원 낭비를 피하는 열쇠입니다.