현재 위치: > 최신 기사 목록> PHP curl_multi_select() 함수에 대한 자세한 설명: 동시 요청이 완료될 때까지 효율적으로 대기

PHP curl_multi_select() 함수에 대한 자세한 설명: 동시 요청이 완료될 때까지 효율적으로 대기

M66 2025-10-10

PHP 함수 cur_multi_select() 소개

PHP 개발에서는 cURL 라이브러리를 사용하여 HTTP 요청을 만드는 것이 일반적인 방법입니다. 프로젝트가 동시에 여러 HTTP 요청을 처리해야 하는 경우, 일련의 기능을 사용하면 cur_multi가 실행 효율성을 효과적으로 향상시킬 수 있습니다. 현재 활성화된 cURL 전송이 완료될 때까지 기다리려면, 컬_다중 선택() 함수를 사용하여 보다 효율적인 대기 메커니즘을 구현할 수 있습니다.

기능 정의

 <span class="fun">cur_multi_select(리소스 $mh[, float $timeout])</span>

매개변수 설명

  • $mh : 기다릴 cURL 배치 핸들입니다.
  • $timeout : 대기 시간 제한(단위: 초)을 나타내는 선택적 매개변수입니다. 0으로 설정하면 즉시 반환됩니다.

기능 효과

cur_multi_select() 함수는 현재 활성 cURL 전송이 완료될 때까지 기다리고 읽을 수 있는 핸들 수를 반환하는 데 사용됩니다. 이 기능을 통해 네트워크 응답을 기다리는 동안 스크립트를 활성 상태로 유지할 수 있어 전반적인 실행 효율성이 향상됩니다.

샘플 코드

 $mh = curl_multi_init();

$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://example.com/api/request1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch1);

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://example.com/api/request2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);

do {
    $status = curl_multi_exec($mh, $active);
    if ($active) {
        curl_multi_select($mh); // 현재 활성 상태를 기다리는 중cURL전송 완료
    }
} while ($active && $status == CURLM_OK);

// 모든 요청이 처리된 후,폐쇄cURL핸들
foreach ([$ch1, $ch2] as $ch) {
    curl_multi_remove_handle($mh, $ch);
    curl_close($ch);
}

curl_multi_close($mh);

코드 설명

위의 예에서는 먼저 cur_multi 배치 핸들을 생성하고 여기에 두 개의 독립적인 컬 요청을 추가했습니다. 그런 다음 , 컬_다중_exec()를 사용하여 전송 프로세스를 실행하고 현재 활성 요청이 컬_다중 선택() 함수를 통해 완료될 때까지 기다립니다. 모든 요청이 처리될 때까지 루프가 계속됩니다. 마지막으로 모든 관련 핸들을 정리하고 닫아 시스템 리소스를 확보합니다.

사용법 제안

curl_multi_select()를 사용하면 동시 HTTP 요청의 처리 성능이 크게 향상될 수 있습니다. 실제 개발에서는 스크립트가 무한 대기 상태로 진입하는 것을 방지하기 위해 대기 기간 동안 타임아웃과 예외를 합리적으로 처리하는 것이 좋습니다. 또한, 더 자세한 오류 처리를 위해 curl_multi_info_read() 함수를 결합하여 각 요청의 반환 상태를 얻을 수 있습니다.

요약

컬_다중_선택() 은 여러 요청을 동시에 처리하는 PHP의 중요한 함수 중 하나입니다. 이를 적절하게 사용하면 개발자는 네트워크 응답을 기다리는 동안 스크립트를 활성 상태로 유지할 수 있으므로 애플리케이션 응답 효율성과 사용자 경험이 크게 향상됩니다.