현재 위치: > 최신 기사 목록> curl_upkeep () 호출을 조롱하는 방법 테스트에 실패합니다

curl_upkeep () 호출을 조롱하는 방법 테스트에 실패합니다

M66 2025-06-02

PHP에서 CURL_UPKEEP 기능은 HTTP 요청의 유지 관리 및 관리를 처리하는 데 사용됩니다. 일반적인 사용 시나리오에는 정기 데이터 업데이트, 서비스 상태 확인 또는로드 밸런싱이 포함됩니다. 그러나 개발자가 Curl_upkeep 함수 호출의 실패를 시뮬레이션하는 것이 매우 중요합니다. 특히 테스트 단계에서 시스템이 다양한 유형의 오류를 처리하는 방법을 확인해야합니다.

이 기사에서는 curl_upkeep 호출이 실패하는 시나리오를 시뮬레이션하는 몇 가지 일반적인 방법을 소개합니다.

1. 시뮬레이션 된 DNS 해상도에 실패했습니다

일반적인 실패는 DNS 해상도 실패입니다. 요청하는 도메인 이름을 유효한 IP 주소로 해결할 수 없다고 가정하면 URL에서 도메인 이름을 수정하여 이러한 오류를 트리거 할 수 있습니다.

 <?php
// 시뮬레이션 DNS 분석이 실패했습니다
$url = "http://invalid-domain.m66.net"; // 이 도메인 이름은 구문 분석 할 수 없습니다
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

if(curl_errno($ch)) {
    echo 'Error:' . curl_error($ch); // 출력 오류 메시지
}

curl_close($ch);
?>

이 예에서는 Invalid-Domain.m66.net 은 유효하지 않은 도메인 이름으로 Curl_Exec 함수가 URL을 올바르게 구문 분석하지 못하여 DNS 오류를 반환합니다.

2. 시뮬레이션 된 연결 시간 초과

또 다른 일반적인 실패 상황은 연결 시간 초과입니다. 지정된 시간 내에 서버가 응답하지 않으면 CURL은 연결 시간 초과 오류를보고합니다. 더 작은 시간 초과를 설정하여이를 시뮬레이션 할 수 있습니다.

 <?php
// 시뮬레이션连接超时
$url = "http://m66.net"; // 유효한 도메인 이름
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 1); // 시간 초과 시간을 설정하십시오1두번째

$response = curl_exec($ch);

if(curl_errno($ch)) {
    echo 'Error:' . curl_error($ch); // 출력 오류 메시지
}

curl_close($ch);
?>

이 예에서는 시간 초과가 매우 짧기 때문에 서버가 1 초 이내에 응답하지 않으면 Curl_Exec은 타임 아웃 오류를 반환합니다.

3. 서버 오류 시뮬레이션 (5xx)

또 다른 실패 상황은 서버에서 발생한 오류 (예 : 500, 502 등)입니다. 이 상황은 일반적으로 코드 오류, 리소스 소진 또는 내부 고장과 같은 서버 측 문제로 인해 발생합니다. 의도적으로 잘못 구성된 URL을 요청하여이를 시뮬레이션 할 수 있습니다.

 <?php
// 시뮬레이션服务器실수 (5xx)
$url = "http://m66.net/server-error"; // 경로가 돌아온다고 가정합니다 500 실수
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

if(curl_errno($ch)) {
    echo 'Error:' . curl_error($ch); // 출력 오류 메시지
} else {
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($http_code >= 500 && $http_code < 600) {
        echo "服务器실수,HTTP 상태 코드: $http_code"; // 시뮬레이션 5xx 실수
    }
}

curl_close($ch);
?>

이 예에서 Server-Orror는 500 오류를 반환하여 서버 오류를 모방한다고 가정합니다.

4. 네트워크 연결을 시뮬레이션합니다

네트워크 인터럽트와 같은 네트워크 문제를 시뮬레이션 해야하는 경우 네트워크 연결을 비활성화하거나 로컬 서버를 사용하여 시뮬레이션 할 수 있습니다. 일부 개발 환경에서는 네트워크를 분리하거나 네트워크 인터럽트를 시뮬레이션하여 유사한 오류를 트리거 할 수 있습니다.

5. 시뮬레이션은 응답하지 않습니다

서버가 완전히 응답하지 않는 상황을 시뮬레이션 할 수도 있습니다. 예를 들어, 응답하지 않는 URL을 사용하거나 컨텐츠를 반환 할 수없는 서버를 로컬로 모방하십시오.

 <?php
// 시뮬레이션服务器无响应
$url = "http://m66.net/no-response"; // 경로가 응답하지 않다고 가정하십시오
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5); // 시간 초과 시간을 설정하십시오5두번째

$response = curl_exec($ch);

if(curl_errno($ch)) {
    echo 'Error:' . curl_error($ch); // 출력 오류 메시지
}

curl_close($ch);
?>

여기서는 응답이 없는 상황을 시뮬레이션하는 가상의 경로입니다.

6. 시뮬레이션 요청 거부 (4xx)

403 (금지), 404 (찾을 수 없음) 등과 같은 일반적인 4xx 오류는 존재하지 않거나 액세스 권한이없는 리소스를 요청하여 시뮬레이션 할 수 있습니다.