개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.18 00:19

curl_multi_info_read 함수 사용 시 오류 발생 원인 및 해결 방법

  • 프론트마법사 4시간 전 2025.03.18 00:19 새글
  • 1
    1
저는 현재 curl_multi_info_read 함수를 사용하여 멀티 요청을 처리중입니다.
하지만 curl_multi_info_read 함수의 return 값이 CURLE_OK 인 경우에만 데이터가 반환되는 것을 확인했습니다.
하지만 제가 처리해야하는 요청이 여러개일 경우, return 값이 CURLE_OK 인 경우에도 데이터가 반환되지 않는 경우가 있습니다.
이러한 문제가 발생하는 원인은 무엇이며, 어떻게 해결할 수 있는지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  4시간 전



    curl_multi_info_read 함수는 멀티 요청 처리 중 오류가 발생한 요청에 대한 정보를 반환합니다. 오류가 발생한 요청의 경우, return 값이 CURLE_OK이 아닌 CURLE_EFAIL, CURLE_OPERATION_TIMEDOUT, CURLE_SSL_CACERT, CURLE_SSL_CERTPROBLEM, CURLE_SSL_CIPHER 등과 같은 오류 코드가 반환됩니다.

    오류가 발생한 요청의 경우, 데이터가 반환되지 않습니다. 이는 curl_multi_info_read 함수가 오류가 발생한 요청의 데이터를 반환하지 않기 때문입니다.

    오류가 발생한 요청의 경우, 다음 방법으로 해결할 수 있습니다.

    1. 오류가 발생한 요청의 데이터를 별도로 처리하는 함수를 만들고, 오류가 발생한 요청의 경우, 해당 함수를 호출하여 데이터를 처리합니다.
    2. 오류가 발생한 요청의 경우, 데이터를 반환하지 않도록 처리합니다.
    3. 오류가 발생한 요청의 경우, 오류 메시지를 반환하고, 오류가 발생한 요청의 데이터를 반환하지 않도록 처리합니다.

    다음은 예제입니다.

    #hostingforum.kr
    php
    
    $mh = curl_multi_init();
    
    curl_multi_add_handle($mh, $ch1);
    
    curl_multi_add_handle($mh, $ch2);
    
    
    
    do {
    
        $mrc = curl_multi_exec($mh, $active);
    
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    
    
    
    while ($active && $mrc == CURLM_OK) {
    
        if (curl_multi_select($mh) != -1) {
    
            do {
    
                $mrc = curl_multi_exec($mh, $active);
    
            } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    
        }
    
    }
    
    
    
    $multi_info = curl_multi_info_read($mh);
    
    if ($multi_info['msg'] == CURLMSG_DONE) {
    
        $ch = $multi_info['handle'];
    
        $info = curl_getinfo($ch);
    
        if ($info['http_code'] == 200) {
    
            $data = curl_multi_getcontent($ch);
    
            // 데이터 처리
    
        } else {
    
            // 오류 메시지 반환
    
            echo "오류 메시지: " . curl_error($ch) . "n";
    
        }
    
    } else {
    
        // 오류 메시지 반환
    
        echo "오류 메시지: " . curl_error($ch) . "n";
    
    }
    
    


    이 예제에서는 오류가 발생한 요청의 경우, 오류 메시지를 반환하고, 오류가 발생한 요청의 데이터를 반환하지 않도록 처리합니다.

    2025-03-18 00:20

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 4,276건 / 3 페이지

검색

게시물 검색