PHP 개발에서는 cURL 라이브러리를 사용하여 HTTP 요청을 만드는 것이 일반적인 방법입니다. 프로젝트가 동시에 여러 HTTP 요청을 처리해야 하는 경우, 일련의 기능을 사용하면 cur_multi가 실행 효율성을 효과적으로 향상시킬 수 있습니다. 현재 활성화된 cURL 전송이 완료될 때까지 기다리려면, 컬_다중 선택() 함수를 사용하여 보다 효율적인 대기 메커니즘을 구현할 수 있습니다.
<span class="fun">cur_multi_select(리소스 $mh[, float $timeout])</span>
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의 중요한 함수 중 하나입니다. 이를 적절하게 사용하면 개발자는 네트워크 응답을 기다리는 동안 스크립트를 활성 상태로 유지할 수 있으므로 애플리케이션 응답 효율성과 사용자 경험이 크게 향상됩니다.