PHP에서 Curl_upkeep () 함수는 HTTP 요청을하는 데 사용되며 일반적으로 외부 서비스와 상호 작용하는 데 사용됩니다. 다양한 시나리오, 특히 요청 응답 시간에 미치는 영향에서 성능을 효과적으로 테스트하기 위해이 기사는 성능 테스트에 CURL_UPKEEP () 기능을 사용하는 방법을 탐색하고 성능을 최적화하기위한 몇 가지 제안을 공유합니다.
curl_upkeep () 함수는 일반적으로 PHP의 CURL 라이브러리를 사용하여 HTTP 요청을 구현하는 것의 일부입니다. 네트워크를 통해 API 또는 기타 서비스에 액세스하는 데 사용되며 웹 콘텐츠 또는 JSON 데이터와 같은 외부 리소스를 얻는 데 적합합니다. 일반적으로 curl_setopt ()를 사용하여 요청 시간 초과, 요청 헤더 및 응답 처리 방법과 같은 HTTP 요청 매개 변수를 구성합니다.
샘플 코드는 다음과 같습니다.
function curl_upkeep($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 요청 시간 초과를 설정하십시오 30 두번째
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
curl_upkeep () 함수의 성능을 테스트 할 때는 주로 요청 응답 시간에 미치는 영향에 중점을 둡니다. 다음 시나리오에서 테스트 할 수 있습니다.
간단한 GET 요청의 경우 복잡한 네트워크 작업없이 CURL_UPKEEP () 기능의 응답 시간을 테스트 할 수 있습니다. 이 시나리오는 주로 외부 서버의 응답 속도에 중점을 둡니다.
$url = "http://m66.net/api/v1/endpoint"; // 대상으로 교체하십시오 URL
$startTime = microtime(true);
$response = curl_upkeep($url);
$endTime = microtime(true);
echo "요청 시간: " . ($endTime - $startTime) . " 두번째";
인증 정보로 요청을 보내야하는 경우 테스트 할 때 추가 인증 지연을 고려해야합니다. 요청 헤더를 인증 정보에 추가하고 응답 시간을 기록 할 수 있습니다.
function curl_upkeep_with_auth($url, $username, $password) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 요청 시간 초과를 설정합니다
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
$url = "http://m66.net/api/v1/secure-endpoint";
$username = "user";
$password = "password";
$startTime = microtime(true);
$response = curl_upkeep_with_auth($url, $username, $password);
$endTime = microtime(true);
echo "요청 시간: " . ($endTime - $startTime) . " 두번째";
일부 시나리오에서 API는 많은 양의 데이터를 반환 할 수 있습니다. 이 경우 응답 시간이 크게 증가 할 수 있습니다. 빅 데이터의 성능을 테스트 할 수 있습니다.
$url = "http://m66.net/api/v1/large-data";
$startTime = microtime(true);
$response = curl_upkeep($url);
$endTime = microtime(true);
echo "요청 시간: " . ($endTime - $startTime) . " 두번째";
일부 요청의 경우, 요청 시간 초과는 네트워크 문제 또는 외부 서비스 실패로 인해 발생할 수 있습니다. 요청 시간 초과의 응답 시간을 테스트하면 타임 아웃 전략을 최적화하는 방법을 평가하는 데 도움이 될 수 있습니다.
function curl_upkeep_with_timeout($url, $timeout = 5) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // 시간 초과 설정
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
$url = "http://m66.net/api/v1/timeout-endpoint";
$startTime = microtime(true);
$response = curl_upkeep_with_timeout($url, 3); // 짧은 시간 초과를 설정하십시오
$endTime = microtime(true);
echo "요청 시간: " . ($endTime - $startTime) . " 두번째";
다른 시나리오에서 요청 응답 시간을 테스트 할 때 다음 방법을 사용하여 curl_upkeep () 함수의 성능을 최적화 할 수 있습니다.
Curlopt_forbid_Reuse를 사용하여 연결 재사용을 비활성화하십시오. 기본적으로 Curl은 연결을 닫아 요청할 때마다 연결을 다시 설정할 수 있습니다. 지속적인 연결을 가능하게하면 네트워크 대기 시간이 크게 줄어들 수 있습니다.
curl_setopt($ch, CURLOPT_FORBID_REUSE, false);
동시에 여러 요청을 보내야하는 경우 Curl_Multi_* 함수를 사용하여 동시 요청을 구현할 수 있습니다. 이렇게하면 단일 요청을 기다림으로써 발생하는 전체 응답 시간이 줄어 듭니다.
$mh = curl_multi_init();
$ch1 = curl_init('http://m66.net/api/v1/endpoint1');
$ch2 = curl_init('http://m66.net/api/v1/endpoint2');
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
do {
curl_multi_exec($mh, $active);
} while ($active);
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
다른 네트워크 조건의 경우 시간 초과를 합리적으로 설정하는 것이 매우 중요합니다. 지나치게 긴 시간군은 네트워크 문제가 발생할 때 프로그램이 응답을 지연시킬 수 있으며, 지나치게 짧은 시간 초과로 인해 요청이 실패 할 수 있습니다. 실제 요구에 따라 시간 초과 설정을 조정해야합니다.
요청 된 데이터가 자주 변경되지 않으면 반복 된 데이터 캐시를 고려하여 동일한 요청의 반복 전송을 피하십시오. 이는 네트워크 요청의 빈도를 크게 줄이고 응답 속도를 향상시킬 수 있습니다.
$cacheFile = 'cache/data.json';
if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < 3600) {
$data = file_get_contents($cacheFile); // 캐시에서 데이터를 읽습니다
} else {
$data = curl_upkeep('http://m66.net/api/v1/data');
file_put_contents($cacheFile, $data); // 캐시 데이터
}
요청에 의해 반환 된 데이터 금액이 크면 반환 된 데이터 양을 제한하고 필요한 필드 만 요청하는 것을 고려할 수 있습니다. 이를 통해 전송 된 데이터 양을 줄여 응답 속도가 증가합니다.