현재 위치: > 최신 기사 목록> curl_upkeep ()로 API 배치 요청의 성능을 최적화하십시오.

curl_upkeep ()로 API 배치 요청의 성능을 최적화하십시오.

M66 2025-05-18

성능 최적화는 API 배치 요청을 할 때 중요한 단계입니다. 인터페이스 호출 빈도가 증가함에 따라 합리적인 최적화 전략은 요청의 시간 간접비를 줄일뿐만 아니라 전체 시스템의 응답 및 안정성을 향상시킬 수 있습니다. PHP의 Curl_upkeep () 는 배치 요청의 성능을 최적화하는 강력한 도구입니다. 이 기사에서는 Curl_upkeep ()를 사용하여 API 배치 요청의 성능을 향상시키고 샘플 코드로 설명하는 방법을 심층적으로 탐색합니다.

1. 왜 API 배치 요청을 최적화해야합니까?

실제 애플리케이션에서, 특히 외부 서비스로 많은 API 호출을 할 때 네트워크 요청의 지연이 종종 병목 현상이됩니다. 각 API 요청에는 DNS 해결, TCP 연결, HTTP 요청 및 응답과 같은 여러 링크가 포함됩니다. 단일 요청으로 소비되는 시간은 사소한 것처럼 보일 수 있지만 요청 수가 많으면 누적 된 시간 손실이 매우 상당해질 수 있습니다. 현재 배치 요청의 성능을 최적화하는 것이 특히 중요합니다.

2. curl_upkeep () 의 역할

Curl_upkeep ()는 CURL 확장을 통해 여러 동시 HTTP 요청을 관리하고 최적화하는 PHP의 도우미 기능입니다. API 배치 요청이 필요한 경우, 기존의 관행은 일반적으로 요청을 하나씩 보내는 것이며 Curl_upkeep () 는 여러 요청을 동시에 보낼 수 있으므로 요청의 실행 효율을 크게 향상시킬 수 있습니다.

curl_upkeep () 의 주요 장점은 다음과 같습니다.

  • 동시 요청 : 여러 요청을 병렬로 처리하면 대기 시간이 줄어 듭니다.

  • 재사용 연결 : CURL은 기존 연결을 재사용하여 중복 DNS 쿼리 및 TCP 핸드 셰이크를 피하십시오.

  • 유연한 제어 : 요청 된 시간 초

3. curl_upkeep ()를 사용하여 배치 요청 성능을 향상시키기위한 구현 단계

Curl_upkeep ()을 사용하여 성능을 향상시키는 방법을 더 잘 이해하려면 API 배치 요청을 구현하고 성능 최적화를 수행하는 방법을 보여주는 샘플 코드가 있습니다.

Code example:
 <?php

// 시뮬레이션 API 요청 주소
$apiUrls = [
    "https://api.m66.net/v1/data/endpoint1",
    "https://api.m66.net/v1/data/endpoint2",
    "https://api.m66.net/v1/data/endpoint3",
    "https://api.m66.net/v1/data/endpoint4",
];

// 초기화 cURL multi handle
$mh = curl_multi_init();

// 만들다 cURL 핸들 배열을 요청합니다
$curlHandles = [];
foreach ($apiUrls as $index => $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 시간 초과 설정

    // 손잡이를 추가하십시오 multi handle 가운데
    curl_multi_add_handle($mh, $ch);
    $curlHandles[$index] = $ch;
}

// 모든 요청을 수행하고 완료를 기다리십시오
$running = null;
do {
    curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0);

// 처리 결과
foreach ($curlHandles as $index => $ch) {
    $response = curl_multi_getcontent($ch);
    echo "Response from endpoint " . ($index + 1) . ":\n";
    echo $response . "\n";
    curl_multi_remove_handle($mh, $ch);
    curl_close($ch);
}

// 폐쇄 multi handle
curl_multi_close($mh);

?>
코드 구문 분석 :
  1. CURL MULTI HANDER 초기화 : 먼저 CURL_MULTI_INIT ()를 사용하여 CURL MULTI HANDE를 초기화하는데, 이는 여러 CURL 요청을 관리하는 핵심입니다.

  2. 단일 요청 설정 : 각 API URL의 경우 Curl_Init ()를 사용하여 단일 컬 핸들을 초기화하고 요청 매개 변수 (예 : URL, 타임 아웃 등)를 설정하십시오.

  3. 멀티 핸들에 요청을 추가하십시오 : curl_multi_add_handle ()을 사용하여 각 컬 요청 핸들을 멀티 핸들에 추가하고 병렬 처리를 시작하십시오.

  4. 요청 실행 : curl_multi_exec ()를 통해 모든 요청을 시작하고 curl_multi_select ()를 사용하여 요청이 완료 될 때까지 기다립니다.

  5. 응답 받기 및 처리 : 각 요청이 완료되면 Curl_Multi_GetContent ()를 사용하여 응답 내용을 가져 와서 처리 할 수 ​​있습니다.

  6. 리소스 정리 : 요청을 완료 한 후 Curl_multi_Remove_handle ()Curl_Close ()를 사용하여 리소스를 해제하고 마지막으로 Curl_Multi_Close () 를 통해 멀티 핸들을 닫습니다.

4. 최적화 기술

배치 요청에서 동시성 성능을 향상시키기 위해 curl_upkeep ()를 사용하는 것 외에도 다음과 같은 최적화 기술도 고려할 수 있습니다.

  • 연결 멀티플렉싱 : Curlopt_Forbid_Reuse를 False 로 설정하여 연결을 멀티플렉싱 할 수 있도록 요청할 때마다 연결 및 DNS 조회 시간이 줄어 듭니다.

  • 비동기 요청 : 시스템이 요청에서 응답을 기다리고 있기 때문에 시스템이 다른 요청을 차단하지 않도록 비동기 방식으로 프로세스 요청을합니다.

  • 배치 요청 처리 : API 요청 수가 너무 커지면 배치로 호출 할 수 있으며 각 배치는 너무 많은 요청을 처리하여 시스템이 충돌하지 않도록 특정 요청을 처리합니다.

  • 타임 아웃 설정을 적절하게 늘리십시오 : 오랫동안 응답하지 않는 요청의 경우, 요청이 대기 상태에있는 것을 피하기 위해 합리적인 시간 초과 시간을 설정할 수 있습니다.

5. 요약

API 배치 요청을 처리하기 위해 curl_upkeep ()를 사용하면 특히 동시 요청이 필요한 경우 요청 효율을 크게 향상시킬 수 있습니다. 합리적으로 연결 멀티플렉싱, 동시성 제어 및 시간 초과 시간을 설정하면 요청의 총 시간을 효과적으로 줄이고 시스템의 응답 기능을 향상시킬 수 있습니다. 대규모 API 통화 시나리오에서 최적화 기술을 사용하면 시스템을보다 안정적이고 효율적으로 만듭니다.

이 기사의 예와 분석을 통해 Curl_upkeep ()를 사용하여 API 배치 요청의 성능을 최적화하는 방법을 마스터했다고 생각합니다.