CURL을 사용하여 PHP에서 동시 요청을 수행 할 때는 일반적으로 Curl_multi_* 일련의 기능을 사용하여 여러 동시 HTTP 요청을 관리합니다. 동시 요청 및 관련 리소스를 효율적으로 처리하려면 CURL_MULTI_CLOSE 기능을 올바르게 사용해야합니다. 이 기사는 동시 요청이 끝난 후 Curl_multi_Close를 올바르게 사용하는 방법을 자세히 설명하여 릴리스 및 종료 속도가 향상됩니다.
동시 요청은 동시에 여러 HTTP 요청을 발행하는 것을 나타냅니다. 이는 일반적으로 여러 요청의 처리 효율을 향상시키는 데 사용됩니다. PHP에서는 curl_multi_init을 사용하여 여러 컬 핸들을 만들고 Curl_multi_add_handle을 통해 여러 핸들에 여러 개의 별도의 컬 요청 핸들을 추가 한 다음 Curl_multi_exec을 통해 이러한 동시 요청을 수행 할 수 있습니다.
curl_multi_* 일련의 함수를 사용하여 동시 요청을 실행할 때 각 요청은 일부 시스템 리소스를 차지합니다. 리소스 누출을 피하려면 요청이 완료된 후 모든 관련 리소스를 자유롭게하기 위해 CURL_MULTI_CLOSE를 사용하여 여러 핸들을 닫아야합니다.
curl_multi_close 의 주요 기능은 다음과 같습니다.
여러 컬 핸들과 관련된 모든 컬 세션을 닫습니다.
curl_multi_init가 생성 될 때 메모리 자원이 할당 된 메모리 자원을 해방시킵니다.
curl_multi_close가 호출되지 않으면 이러한 리소스가 올바르게 릴리스되지 않아 메모리 누출 또는 성능 문제가 발생할 수 있습니다.
다음은 동시 요청이 끝난 후 CURL_MULTI_CLOSE를 사용하여 리소스를 올바르게 사용하는 방법을 보여주는 간단한 예입니다.
<?php
// 초기화 cURL 여러 핸들
$mh = curl_multi_init();
// 여러 요청을 정의합니다 URLs
$urls = [
"https://gitbox.net/api/endpoint1",
"https://gitbox.net/api/endpoint2",
"https://gitbox.net/api/endpoint3"
];
// 저장 cURL 핸들
$chArray = [];
// 만들다 cURL 핸들并添加到여러 핸들中
foreach ($urls as $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch);
$chArray[] = $ch;
}
// 동시 요청을 수행하십시오
do {
$status = curl_multi_exec($mh, $active);
if ($active) {
curl_multi_select($mh);
}
} while ($active && $status == CURLM_OK);
// 응답 데이터를 얻고 처리하십시오
foreach ($chArray as $ch) {
$response = curl_multi_getcontent($ch);
// 응답 내용 처리
echo "Response: " . $response . "\n";
}
// 正确关闭여러 핸들并释放资源
foreach ($chArray as $ch) {
curl_multi_remove_handle($mh, $ch);
curl_close($ch); // 각각을 닫습니다 cURL 핸들
}
// 最后关闭여러 핸들
curl_multi_close($mh);
echo "모든 요청이 완료되었습니다,리소스가 공개되었습니다。\n";
?>
여러 핸들 초기화 :
Curl_multi_init은 여러 컬 핸들을 관리하는 데 사용되는 여러 핸들을 초기화하는 데 사용됩니다.
컬 핸들을 만들고 여러 핸들에 추가하십시오.
curl_init을 통해 단일 컬 핸들을 생성하고 해당 요청 매개 변수를 설정합니다. 그런 다음 curl_multi_add_handle을 사용하여 각 핸들을 여러 핸들에 추가하십시오.
동시 요청 수행 :
curl_multi_exec 은 모든 요청이 완료 될 때까지 모든 동시 요청을 실행하는 루프 기능입니다. curl_multi_select는 활동 요청이 완료 될 때까지 기다리는 데 사용됩니다.
응답 데이터 처리 :
curl_multi_getContent를 사용하여 각 요청의 응답을 얻고 해당 처리를 수행하십시오.
리소스 닫기 :
curl_multi_remove_handle을 사용하여 여러 핸들에서 각 컬 핸들을 제거한 다음 Curl_Close를 호출하여 각 컬 핸들을 닫습니다. 마지막으로 Curl_multi_Close를 호출하여 여러 핸들을 닫고 모든 리소스를 해제하십시오.
동시 요청을 할 때 리소스를 올바르게 관리하고 릴리스하는 것이 매우 중요합니다. curl_multi_close 및 기타 관련 기능을 사용하면 요청이 완료된 후 모든 점유 리소스가 해제되어 메모리 누출 및 성능 문제를 피할 수 있습니다. 특히 동시 요청이 높은 시나리오에서, 합리적인 자원 관리는 프로그램의 안정성과 효율성을 향상시키는 데 중요합니다.