PHP 개발에서 네트워크 요청에 CURL을 사용하는 것은 매우 일반적인 작업입니다. 그러나 요청 된 원격 서버가 천천히 응답하거나 전혀 응답하지 않으면 프로그램이 오랫동안 또는 "고정 된"대기를 기다릴 수 있습니다. 이 상황을 피하기 위해 Curl_init을 통해 요청 된 시간 초과 시간을 설정하여 프로그램의 안정성과 응답 속도를 보장 할 수 있습니다. 이 기사는 Curl_Init을 사용하여 시간 초과 매개 변수를 설정하고 재밍을 방지하기위한 실용적인 팁을 제공하는 방법을 자세히 소개합니다.
네트워크 요청의 지연 또는 실패는 불가피하며, 특히 타사 인터페이스에 대한 호출. 타임 아웃이 설정되지 않으면 Curl_Exec은 계속 차단하고 대기하여 PHP 스크립트가 매달려 사용자 경험과 서비스의 정상적인 작동에 영향을 미칠 수 있습니다. 따라서 요청 시간 초과를 합리적으로 설정하는 것은 PHP 프로그램의 견고성에 대한 중요한 보증입니다.
PHP에서 Curl_SetOpt 를 사용하여 다양한 옵션을 설정하십시오. 다음 두 매개 변수는 주로 타임 아웃과 관련이 있습니다.
Curlopt_connectTimeout : 연결 설정의 시간 초과 (초 단위), 즉 연결 시작부터 서버로의 최대 대기 시간을 설정합니다.
Curlopt_Timeout : 연결 시간, 데이터 전송 시간 등을 포함하여 전체 요청 실행에 대한 타임 아웃 (초 단위)을 설정합니다.
간단한 예를 들어 봅시다 :
<?php
$ch = curl_init('https://gitbox.net/api/test'); // 도메인 이름을 대체하십시오 gitbox.net
// 연결 시간 초과를 설정하십시오5두번째
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
// 실행 시간 초과 시간을 설정하십시오10두번째
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
// 직접 출력 대신 결과를 반환합니다
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo '요청 오류:' . curl_error($ch);
} else {
echo '요청이 성공했습니다,반환 결과:' . $response;
}
curl_close($ch);
?>
위의 코드에서 프로그램은 최대 5 초 동안 서버에 연결하고 전체 요청이 최대 10 초 동안 기다립니다. 시간 초과 후 Curl_Exec은 Curl_errno를 통해 False를 반환하고 오류 코드를 가져옵니다.
시간 초과 매개 변수를 합리적으로 설정하십시오
과도한 대기를 피하기 위해 인터페이스의 응답 속도에 따라 curlopt_connecttimeout 및 curlopt_timeout을 합리적으로 조정하십시오.
비 블로킹 모드 켜기 (선택 사항)
여러 요청이있는 경우 Curl_multi를 사용하면 단일 요청으로 전체 프로그램을 차단하지 않도록 동시 요청을 구현할 수 있습니다.
재 시도 메커니즘을 설정하십시오
타임 아웃과 재 시정 로직을 결합하여 네트워크 요청이 때때로 실패하며 성공률을 향상시킬 수 있습니다.
로깅 및 알람
시간 초과 및 실패한 요청을 모니터링하고 즉시 문제를 해결하고 최적화합니다.
DNS 해상도 지연을 피하십시오
curlopt_dns_cache_timeout을 사용하여 DNS 해상도 결과를 캐시하여 해상도 시간을 줄일 수 있습니다.
PHP에서 curl_init을 사용하는 경우 시간 초과 매개 변수를 합리적으로 구성하여 프로그램이 고착되고 장기 차단되고 프로그램 견고성을 향상시킬 수 있습니다. 동시 요청 및 재시도 메커니즘과 결합하여 네트워크 요청을보다 안정적이고 신뢰할 수있게 할 수 있습니다.