현재 위치: > 최신 기사 목록> curl_multi_close curl_error와 협력하기위한 오류 문제 해결 기술

curl_multi_close curl_error와 협력하기위한 오류 문제 해결 기술

gitbox 2025-05-12

PHP에서 Curl은 HTTP 요청을 보내고 처리 응답을 보내기위한 매우 강력한 라이브러리입니다. 동시 요청을 할 때는 일반적으로 Curl_multi_* 함수를 사용하여 멀티 스레딩을 수행합니다. 요청 수가 증가함에 따라 디버깅 및 문제 해결 오류가 특히 중요해집니다. 이 기사는 Curl_multi_Close 함수와 Curl_error를 사용하여 멀티 스레드 요청에서 오류를 효과적으로 문제 해결하는 방법을 살펴 봅니다.

1. curl_multi_* 함수는 무엇입니까?

curl_multi_* 시리즈 함수는 여러 HTTP 요청을 동시에 시작하는 PHP의 함수입니다. 단일 Curl_Exec 과 달리 Curl_multi_*는 한 번에 여러 요청을 실행하고 응답을 처리 할 수 ​​있습니다. 핵심 기능에는 다음이 포함됩니다.

2. 오류 문제 해결을 위해 curl_multi_closecurl_error를 사용하십시오

CURL_MULTI_CLOSE 는 주로 모든 요청이 실행 된 후 다중 핸들 리소스를 닫는 데 사용되며 CURL_ERROR는 CURL 요청에서 오류 정보를 얻는 데 사용됩니다. 다중 스레드 요청에서 여러 요청이 일반적으로 동시에 처리되며 오류가 즉시 나타나지 않을 수 있습니다. 이 두 기능을 합리적으로 결합하여 오류를 잡고 문제 해결을 도울 수 있습니다.

1 단계 : 컬 핸들을 초기화합니다

먼저 CURL 멀티 핸들을 초기화하고 각 요청에 대해 독립적 인 컬 핸들을 만들어야합니다.

 $mh = curl_multi_init(); // 여러 핸들을 초기화합니다
$urls = [
    "https://example.com/api/endpoint1",
    "https://example.com/api/endpoint2",
    "https://example.com/api/endpoint3",
];

$curlHandles = [];
foreach ($urls as $index => $url) {
    $ch = curl_init($url); // 단일을 초기화하십시오 cURL 핸들
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $curlHandles[$index] = $ch;
    curl_multi_add_handle($mh, $ch); // 将핸들添加到多핸들中
}
2 단계 : 다중 스레드 요청을 수행하십시오

curl_multi_exec을 사용하여 모든 요청을 실행하고 실행 상태를 모니터링하십시오.

 $running = null;
do {
    curl_multi_exec($mh, $running); // 요청을 실행하십시오
    curl_multi_select($mh); // 작업이 완료 될 때까지 기다립니다
} while ($running > 0);
3 단계 : 요청 결과 및 문제 해결을 처리하십시오

모든 요청이 완료되면 curl_multi_getContent를 통해 각 요청의 응답 내용을 가져오고 Curl_Error를 사용하여 요청이 실패했는지 확인할 수 있습니다.

 foreach ($curlHandles as $index => $ch) {
    $response = curl_multi_getcontent($ch); // 응답 내용을 얻으십시오
    if (curl_errno($ch)) {
        // 캡처 오류 메시지
        $error_msg = curl_error($ch);
        echo "묻다 {$urls[$index]} 오류가 발생했습니다: $error_msg\n";
    } else {
        echo "묻다 {$urls[$index]} 성공,응답 내용: $response\n";
    }
    curl_multi_remove_handle($mh, $ch); // 从多핸들中移除
    curl_close($ch); // 关闭单个핸들
}
4 단계 : 여러 핸들을 닫습니다

마지막으로 Curl_multi_Close를 사용하여 여러 핸들을 닫고 리소스를 확보하십시오.

 curl_multi_close($mh); // 关闭多핸들

3. 오류 확인 예제

API 요청 목록이 있다고 가정하고 동시에 처리 할 때 특정 요청 실패에 직면 할 수 있습니다. 위의 방법을 통해 오류를 포착하고 오류 메시지를 인쇄 할 수 있습니다. 일반적인 오류에는 DNS 해상도 실패, 연결 시간 초과 등이 포함됩니다. 일반적으로 Curl_error는 오류의 특정 원인을 식별하는 데 도움이됩니다.

4. 요약

curl_multi_closecurl_error를 사용하여 다중 스레드 요청에 대한 오류 확인과 협력하는 것은 매우 효과적인 디버깅 방법입니다. 각 요청에 대한 오류 정보를 합리적으로 캡처함으로써 동시 요청에서 발생하는 문제를 신속하게 찾아서 해결할 수 있습니다. 동시 요청을 처리 할 때 코드를 명확하고 간결하게 유지하고 과도한 중첩 및 중복 코드를 피하십시오.