현재 위치: > 최신 기사 목록> php curl_multi_close는 curl_multi_init의 일반적인 문제를 해결합니다

php curl_multi_close는 curl_multi_init의 일반적인 문제를 해결합니다

gitbox 2025-05-29

PHP에서 Curl_multi_* 일련의 함수는 동시 CURL 요청을 실행하는 데 사용되므로 여러 HTTP 요청을 동시에 처리하는 데 도움이 될 수 있습니다. 동시 요청을 완료하면 CURL_MULTI_CLOSE를 사용하여 컬 핸들을 닫아야합니다. 이 기사에서는 curl_multi_close를 사용하는 방법, 일반적인 오류 및이를 해결하는 방법을 살펴 봅니다.

curl_multi_close의 사용

curl_multi_close 함수는 curl_multi_init 에 의해 초기화 된 CURL Multi-Handle을 닫는 데 사용됩니다. 그 기능은 관련 리소스를 정리하고 메모리 누출을 피하는 것입니다. 그것을 사용할 때, 우리는 일반적으로 curl_multi_init을 사용하여 여러 컬 핸들을 초기화하고 모든 요청이 실행되면 핸들을 닫기 위해 Curl_Multi_Close를 호출합니다.

샘플 코드

 <?php
// 초기화cURL여러 핸들
$mh = curl_multi_init();

// 초기화cURL단일 핸들
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://gitbox.net/api/v1/data1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://gitbox.net/api/v1/data2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);

// 将핸들添加到여러 핸들中
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);

// 다중 실행cURL묻다
$running = null;
do {
    curl_multi_exec($mh, $running);
} while ($running > 0);

// 폐쇄cURL핸들
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

// 폐쇄单个cURL핸들
curl_close($ch1);
curl_close($ch2);

echo "묻다完成!";
?>

위의 예에서 Curl_multi_init은 다중 핸들 $ MH 를 초기화 한 다음 두 개의 별도 컬 핸들 $ CH1$ CH2를 만듭니다. 이 두 핸들은 curl_multi_add_handle을 통해 $ MH 에 추가되며 여러 HTTP 요청이 수행됩니다. 마지막으로 Curl_multi_Remove_handle을 사용하여 이러한 핸들을 제거하고 Curl_Multi_Close를 호출하여 여러 핸들을 닫고 관련 리소스를 정리하십시오.

curl_multi_init의 일반적인 오류 및 솔루션

curl_multi_close 는 간단하지만 curl_multi_init 과 함께 사용할 때 몇 가지 일반적인 문제와 오류가 발생합니다. 다음으로 이러한 일반적인 오류와 해당 솔루션에 대해 논의 할 것입니다.

1. 오류 : 컬 다중 핸들이 올바르게 초기화되지 않습니다

오류 설명 : 때로는 Curl_Multi_Init을 호출하여 여러 핸들을 초기화하고 직접 핸들을 추가하기 시작하는 것을 잊을 수 있습니다.

해결 방법 : curl_multi_add_handle을 호출하기 전에 여러 핸들이 제대로 초기화되었는지 확인하십시오. 또한 curl_multi_close를 사용하여 마지막에 청소해야합니다.

 <?php
$mh = curl_multi_init(); // 确保已经초기화

// 다른 코드...
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);

// 最后폐쇄
curl_multi_close($mh);
?>

2. 오류 : 모든 핸들이 올바르게 닫히지 않습니다

오류 설명 : 모든 요청이 완료된 후 Curl_Multi_Remove_handle 이 올바르게 호출되지 않거나 Curl_Multi_Close가 여러 핸들을 닫는 데 사용되지 않으면 리소스 누출이 발생할 수 있습니다.

해결 방법 : 여러 핸들에 추가 된 각 개별 컬 핸들이 제거되고 Curl_multi_Close가 끝에서 호출되는지 확인하십시오.

 <?php
// 确保移除所有핸들
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);  // 리소스 정리
?>

3. 오류 : 다중 요청이 완료되지 않았습니다

오류 설명 : 여러 CURL 요청을 실행할 때 Curl_Multi_Close가 모든 요청이 완료 될 때까지 기다리지 않으면 요청이 완전히 실행되지 않는 문제가 발생할 수 있습니다.

해결 방법 : curl_multi_exec 루프를 사용하여 모든 요청이 완료되도록하십시오. curl_multi_exec은 모든 요청이 완료 될 때까지 실행됩니다.

 <?php
$running = null;
do {
    curl_multi_exec($mh, $running);
} while ($running > 0);  // 等待所有묻다完成

curl_multi_close($mh);  // 폐쇄여러 핸들
?>

요약

curl_multi_close는 여러 컬 요청을 처리 할 때 무시할 수없는 단계입니다. 동시 요청이 완료된 후 관련 리소스를 해제 할 수 있습니다. Curl_multi_init 과 함께 사용하면 일반적인 오류는 주로 초기화 및 리소스 청소에 중점을 둡니다. 코드를주의 깊게 확인하고 각 단계가 올바르게 실행되는지 확인하여 대부분의 오류를 피할 수 있습니다.

이 기사가 Curl_multi_CloseCurl_multi_init를 더 잘 이해하고 사용하는 데 도움이되기를 바랍니다. 더 많은 질문이 있으시면, 논의 할 메시지를 남겨주세요!