현재 위치: > 최신 기사 목록> curl_multi_close는 curl_multi_exec을 사용할 때 참고 사항입니다

curl_multi_close는 curl_multi_exec을 사용할 때 참고 사항입니다

gitbox 2025-05-12

PHP에서 CURL을 사용할 때 Curl_Multi_ExecCurl_Multi_Close는 요청을 완료 한 후 여러 CURL 요청을 수행하고 리소스를 해제하는 일반적으로 사용되는 기능입니다. 이 두 기능의 올바른 사용법을 이해하면 특히 여러 URL을 동시에 요청해야 할 때 프로그램의 성능을 효과적으로 향상시킬 수 있습니다. 이 기사는 Curl_Multi_ExecCurl_Multi_Close 함수를 올바르게 사용하는 방법을 자세히 소개하고 실제 사용에 대한 몇 가지 예방 조치를 논의합니다.

curl_multi_execcurl_multi_close 소개

curl_multi_exec :

curl_multi_exec 함수는 PHP 컬 확장에서 다중 실행 함수입니다. 이를 통해 여러 컬 요청을 하나씩 보내지 않고 동시에 여러 개의 컬 요청을 실행할 수 있습니다. 일반적으로 Curl_multi_exec은 모든 요청이 완료 될 때까지 여러 요청에 따라 예약됩니다. 실행 프로세스는 한 번에 완료되지 않았지만 실행이 계속 될 수있는시기를 결정하려면 루프가 필요합니다.

curl_multi_close :

curl_multi_close는 curl_multi_init 에 의해 생성 된 컬 세션 핸들을 닫고 청소하는 데 사용됩니다. 각 컬 핸들 (즉, Curl_Init을 통해 생성 된 핸들)을 자동으로 지우지 않으므로 개발자는 리소스를 자유롭게하기 위해 명시 적으로 호출해야합니다.

사용의 예

다음은 CURL_MULTI_EXECCURL_MULTI_CLOSE 의 조합을 사용하여 동시 요청을 수행하는 방법을 보여주는 간단한 PHP 예입니다.

 <?php
// 초기화 cURL 여러 대화
$multiCurl = curl_multi_init();

// 묻다 URLs
$urls = [
    "https://gitbox.net/api/data1",
    "https://gitbox.net/api/data2",
    "https://gitbox.net/api/data3"
];

// 모두 저장하십시오 cURL 핸들
$curlHandles = [];
foreach ($urls as $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($multiCurl, $ch);
    $curlHandles[] = $ch;
}

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

// 반품 결과를 얻으십시오
foreach ($curlHandles as $ch) {
    $response = curl_multi_getcontent($ch);
    echo "Response: " . $response . "\n";
}

// 각각을 닫습니다 cURL 핸들
foreach ($curlHandles as $ch) {
    curl_multi_remove_handle($multiCurl, $ch);
    curl_close($ch);
}

// 얼마나 꺼져 있습니다 cURL 세션
curl_multi_close($multiCurl);
?>

코드 구문 분석

  1. 여러 세션 초기화 :
    curl_multi_init () 함수를 사용하여 여러 컬 세션 핸들 ( $ multiCurl )을 초기화합니다.

  2. 컬 요청 설정 :
    $ urls 배열에 요청 해야하는 URL을 나열하십시오 (도메인 이름은 gitbox.net 으로 대체되었습니다). curl_init () 를 통해 각 요청 핸들을 초기화하고 각 요청에 필요한 옵션을 설정하십시오.

  3. 여러 세션에 핸들을 추가하십시오 .
    Curl_Init () 가 만든 각 컬 핸들은 curl_multi_add_handle ()을 사용하여 여러 세션에 추가됩니다.

  4. 요청을 실행하십시오 .
    모든 CURL 요청은 Curl_Multi_Exec () 함수를 통해 실행됩니다. 이 기능은 모든 요청이 완료 될 때까지 차단됩니다. 우리는 curl_multi_select ()를 사용하여 프로그램이 루프 할 때마다 다음 요청을 너무 빨리 만들지 않도록합니다.

  5. 응답 내용을 가져옵니다 .
    curl_multi_getContent () 를 사용하여 각 요청의 반환 결과를 얻으십시오.

  6. 핸들 닫기 :
    모든 요청이 완료되면 각 요청에 대한 핸들은 curl_multi_remove_handle ()curl_close () 를 통해 닫아야합니다.

  7. 여러 세션 닫기 :
    마지막으로 Curl_multi_Close ()를 사용하여 여러 세션을 닫고 해당 리소스를 해제하십시오.

주목해야 할 것

curl_multi_execcurl_multi_close를 사용하는 경우 다음 사항에주의를 기울여야합니다.

  1. 요청에 대한 동시성 제한 :
    동시 요청을 보낼 때 서버는 동시성 수에 제한이있을 수 있습니다. 일반적으로 과도한 서버로드를 유발하는 과도한 동시 요청을 피하기 위해 한 번에 최대 5 개의 요청을 보내는 것과 같은 최대 동의 수를 제한합니다.

  2. 오류 처리 :
    curl_multi_exec을 실행할 때는 가능한 오류를 알고 있어야합니다. 요청이 실패한 경우 처리를 위해 Curl_Error () 를 통해 자세한 오류 정보를 얻을 수 있습니다.

  3. 자원 정리 :
    curl_multi_close를 사용한 후에는 각 독립적 인 컬 요청 핸들 ( curl_close () )을 명시 적으로 닫는 것을 잊지 마십시오. 자원이 올바르게 정리되지 않으면 메모리 누출 또는 기타 리소스 관리 문제가 발생할 수 있습니다.

  4. 모든 요청이 완료 될 때까지 기다립니다 .
    Curl_multi_exec은 모든 요청이 완료된 후에 후속 작업이 계속되도록 해야하는 루프 실행 프로세스입니다. Curl_multi_Select ()는 요청이 준비 될 때까지 프로그램을 차단합니다.

  5. 성능 고려 사항 :
    많은 동시 요청을 처리 할 때 최대 동시 횟수의 합리적인 설정과 요청의 배치 처리는 응용 프로그램의 성능을 크게 향상시킬 수 있습니다.

요약

PHP에서 curl_multi_execcurl_multi_close 함수를 사용하는 경우 올바른 프로세스 및 리소스 관리가 중요합니다. 요청 옵션을 합리적으로 설정하고 동시 요청 처리 및 자원을 올바르게 정리하면 프로그램을보다 효율적이고 안정적으로 실행할 수 있습니다. 동시에 실제 개발에서 오류 처리, 리소스 릴리스 및 동시성 제어는 많은 잠재적 인 문제를 피할 수 있습니다. 이 기사 가이 두 기능의 조합을 더 잘 이해하는 데 도움이되기를 바랍니다.