현재 위치: > 최신 기사 목록> curl_close와 curl_multi_close와 사용 시나리오의 차이

curl_close와 curl_multi_close와 사용 시나리오의 차이

gitbox 2025-05-26

Curl_Close 는 컬 세션을 닫는 데 사용되는 기능입니다. Curl_init 으로 컬 세션이 초기화 될 때마다 컬 리소스가 반환됩니다. 이 리소스는 요청이 완료된 후 Curl_Close를 통해 해제해야합니다. 자원이 제 시간에 닫히지 않으면 메모리 누출 또는 자원 폐기물로 이어질 수 있습니다.

 <?php
$ch = curl_init('http://gitbox.net/example'); // 초기화 cURL 세션
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 리턴 내용을 문자열로 설정하십시오
$response = curl_exec($ch); // 구현하다 cURL 묻다
curl_close($ch); // 폐쇄 cURL 세션,리소스를 자유롭게합니다
?>

위의 예에서 Curl_Close는 Curl_Init 에 의해 초기화 된 세션을 닫는 데 사용되어 리소스가 제거되도록합니다. 이 기능은 일반적으로 요청이 완료된 직후에 자원을 적시에 정리할 수 있도록 호출됩니다.

curl_multi_close 함수의 역할

curl_multi_close 는 여러 컬 세션을 닫는 데 사용되는 기능입니다. Curl_multi_* 일련의 함수와 함께 사용되며 여러 CURL 요청이 동시에 실행되는 시나리오에 적합합니다. curl_multi_init을 사용하여 Curl Multi-Handle Resource를 작성한 후 Curl_multi_add_handle을 통해 다중 핸들에 여러 컬 세션을 추가 한 다음 Curl_multi_exec 으로 여러 요청을 실행하고 모니터링 할 수 있습니다. 작업을 완료 한 후에는 Curl_multi_Close를 사용하여 전체 멀티 핸들을 닫아야합니다.

 <?php
// 초기화多个 cURL 세션
$mh = curl_multi_init();

$ch1 = curl_init('http://gitbox.net/example1');
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch1);

$ch2 = curl_init('http://gitbox.net/example2');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);

// 구현하다多묻다
do {
    $status = curl_multi_exec($mh, $active);
} while ($active);

// 폐쇄所有세션
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>

이 예에서 Curl_multi_Close는 다중 핸들 및 릴리스 관련 리소스에 추가 된 모든 컬 세션을 닫는 데 사용됩니다.

curl_close와 curl_multi_close의 차이

  1. 응용 프로그램의 다른 범위 :

    • Curl_Close 는 단일 컬 세션 리소스에만 적용됩니다. 하나의 요청 만 처리하면 Curl_Close를 사용하여 요청을 닫을 수 있습니다.

    • CURL_MULTI_CLOSE 는 여러 CURL 요청이 동시에 처리되는 시나리오에 적합합니다. 다중 핸들 리소스를 닫고 관련된 모든 컬 세션을 출시합니다.

  2. 자원 릴리스 :

    • Curl_Close 는 단일 컬 세션을 제거하는 데 사용되는 리소스이며 처리 할 때 정리에 적합합니다.

    • CURL_MULTI_CLOSE는 다중 요청 리소스를 해제하는 데 사용되며 동시 요청을 처리 할 때 청소에 적합합니다.

  3. 성능 차이 :

    • Curl_Close는 성능 오버 헤드가 적고 요청을 하나씩 닫는 것입니다.

    • CURL_MULTI_CLOSE는 여러 요청을 닫을 때 여러 세션을 처리해야하며 성능 오버 헤드는 비교적 크지 만 여러 요청이 동시에 실행될 때 리소스 청소에 적합합니다.

curl_close 및 curl_multi_close를 사용하는 데 적합한 시나리오는 무엇입니까?

  • curl_close를 사용한 시나리오 :

    • 단일 HTTP 요청 만 시작 해야하는 경우 Curl_Close를 사용하여 리소스를 확보하십시오.

    • 일부 간단한 API 요청 또는 단일 웹 페이지의 크롤링에 적합합니다.

  • curl_multi_close를 사용한 시나리오 :

    • 여러 HTTP 요청을 동시에 실행 해야하는 경우 CURL_MULTI_CLOSE를 사용하여 다중 요청 자원을 제거하십시오.

    • 배치 데이터를 크롤링하거나 여러 다른 URL을 동시에 요청하는 데 적합합니다.

    • CURL_MULTI_* 기능의 조합은 배치 크롤링 또는 여러 API 요청을 보내는 것과 같은 높은 동시성 작업을 처리 할 때 효율성을 크게 향상시킬 수 있습니다.

요약

curl_closecurl_multi_close 는 모두 CURL 세션과 무료 리소스를 닫는 데 사용되지만 다른 시나리오에 적용 할 수 있습니다. CURL_CLOSE 는 단일 요청 사례에 적합하지만 Curl_Multi_Close는 동시 요청 사례에 적합합니다. 실제 개발에서 요구에 따라 적절한 기능을 선택하면 코드의 효율성을 향상시키고 리소스 소비를 줄일 수 있습니다.