현재 위치: > 최신 기사 목록> 하나의 스크립트에서 curl_close를 사용하여 여러 동시 요청을 종료하는 방법은 무엇입니까?

하나의 스크립트에서 curl_close를 사용하여 여러 동시 요청을 종료하는 방법은 무엇입니까?

gitbox 2025-05-26

CURL은 PHP를 사용하여 동시 HTTP 요청을 처리 할 때 매우 일반적이고 강력한 도구입니다. 효율성을 향상시키기 위해 일반적으로 Curl_multi_* 일련의 함수를 사용하여 여러 동시 요청을 시작합니다. 모든 요청을 완료 한 후 각 요청 핸들을 올바르게 닫는 것이 매우 중요합니다. 이것이 바로 Curl_Close () 가하는 일입니다. 이 기사는 PHP 스크립트에서 Curl_Multi_Exec ()와 함께 Curl_Close ()를 사용하여 여러 동시 요청을 종료하는 방법을 자세히 설명합니다.

기본 준비 : 여러 요청을 시작합니다

먼저 여러 컬 핸들을 생성하고 curl_multi_add_handle ()을 통해 다중 핸들 리소스에 추가해야합니다.

 $urls = [
    "https://gitbox.net/api/service1",
    "https://gitbox.net/api/service2",
    "https://gitbox.net/api/service3"
];

$multiHandle = curl_multi_init();
$curlHandles = [];

foreach ($urls as $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    curl_multi_add_handle($multiHandle, $ch);
    $curlHandles[] = $ch;
}

이 코드에서는 3 개의 URL을 세 개의 개별 컬 요청 핸들로 추가하고 멀티 핸들 리소스 $ multihandle 에 추가합니다.

동시 요청을 수행하십시오

모든 핸들을 추가 한 후 Curl_Multi_Exec ()Curl_Multi_Select () 를 통해 이러한 요청의 실행을 처리합니다.

 $running = null;
do {
    curl_multi_exec($multiHandle, $running);
    curl_multi_select($multiHandle);
} while ($running > 0);

이 루프는 모든 동시 요청이 완료 될 때까지 계속 실행됩니다. curl_multi_exec ()는 실제로 요청을 시작하는 반면 curl_multi_select ()는 CPU 유휴 상태를 피하기 위해 활성 연결을 기다리는 데 사용됩니다.

응답 콘텐츠 받기 (선택 사항)

실행이 완료되면 각 요청의 결과를 얻을 수 있습니다.

 $responses = [];
foreach ($curlHandles as $ch) {
    $responses[] = curl_multi_getcontent($ch);
}

핸들 닫기 : curl_close () 사용

요청이 완료되면 각 CURL 요청 핸들 및 다중 핸들 리소스 자체를 포함한 모든 리소스가 릴리스되도록해야합니다. Curl_Close () 가 작동하는 곳입니다.

 foreach ($curlHandles as $ch) {
    curl_multi_remove_handle($multiHandle, $ch);
    curl_close($ch);
}

curl_multi_close($multiHandle);

위의 코드에서는 curl_multi_remove_handle ()를 하나씩 사용하여 다중 핸들 리소스에서 각 핸들을 제거한 다음 Curl_Close ()를 사용하여 닫고 다중 핸들 리소스 자체를 닫습니다.

요약

Curl_Close ()를 사용하여 리소스를 올바르게 해제하는 것은 동시 요청을 처리 한 후에 무시할 수없는 단계입니다. 다음은 처리 프로세스에 대한 완전한 요약입니다.

  1. 다중 컬 요청 핸들을 초기화합니다.

  2. 다중 핸들 리소스에 핸들을 추가하십시오.

  3. 동시 요청을 처리하기 위해 curl_multi_exec () 를 사용하십시오.

  4. curl_multi_getContent ()를 사용하여 결과를 얻으십시오 (선택 사항);

  5. curl_close ()curl_multi_close ()를 사용하여 모든 핸들과 리소스를 닫으십시오.

위의 방법을 통해 단일 PHP 스크립트에서 여러 동시 요청을 효율적이고 우아하게 관리하여 시스템 리소스가 낭비되지 않도록 할 수 있습니다.