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 요청 핸들 및 다중 핸들 리소스 자체를 포함한 모든 리소스가 릴리스되도록해야합니다. 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 ()를 사용하여 리소스를 올바르게 해제하는 것은 동시 요청을 처리 한 후에 무시할 수없는 단계입니다. 다음은 처리 프로세스에 대한 완전한 요약입니다.
다중 컬 요청 핸들을 초기화합니다.
다중 핸들 리소스에 핸들을 추가하십시오.
동시 요청을 처리하기 위해 curl_multi_exec () 를 사용하십시오.
curl_multi_getContent ()를 사용하여 결과를 얻으십시오 (선택 사항);
curl_close () 및 curl_multi_close ()를 사용하여 모든 핸들과 리소스를 닫으십시오.
위의 방법을 통해 단일 PHP 스크립트에서 여러 동시 요청을 효율적이고 우아하게 관리하여 시스템 리소스가 낭비되지 않도록 할 수 있습니다.