현재 위치: > 최신 기사 목록> guzzle에서 curl_upkeep ()의 동작을 시뮬레이션하는 방법

guzzle에서 curl_upkeep ()의 동작을 시뮬레이션하는 방법

M66 2025-05-31

PHP에서 Curl_upkeep ()은 요청이 시작될 때마다 연결 및 종료의 오버 헤드를 줄이기 위해 지속적인 연결 풀을 유지하는 기능입니다. HTTP 요청에 Guzzle을 사용하는 경우 Guzzle 자체는 직접 Curl_Upkeep () 기능을 제공하지 않지만 Guzzle의 구성 옵션과 적절한 연결 풀링 메커니즘을 사용 하여이 효과를 시뮬레이션 할 수 있습니다. 이 기사는 Guzzle에서 유사한 기능을 구현하는 방법을 설명합니다.

1. curl_upkeep () 란 무엇입니까?

Curl_upkeep () 는 PHP의 컬 확장에 사용되는 기능으로 지속적인 연결을 유지하여 열린 연결을 재사용하여 효율성을 향상시킵니다. 이 접근법은 각 요청과의 연결을 재건하는 것과 비교하여 요청의 대기 시간 및 대역폭 소비를 크게 줄입니다.

Guzzle은 Curl_upkeep () 의 기능과 유사한 지속적인 연결 및 연결 풀의 관리를 지원하는 강력한 HTTP 클라이언트 라이브러리입니다. Guzzle의 HTTP 클라이언트를 구성하여이를 달성 할 수 있습니다.

2. Guzzle의 연결 풀 및 지속적인 연결

Guzzle에서 연결 풀의 관리는 HandlerstackCurlmultihandler를 통해 구현됩니다. 요청이 전송 될 때마다 Guzzle은 Curl_upkeep () 의 함수와 같습니다.

Guzzle에서는 Max_Requests지속적인 구성을 통해 연결 풀의 동작을 제어 할 수 있습니다. 이러한 구성 항목을 사용하면 연결 풀의 크기, 재사용 정책 등을 최적화하여 요청의 효율성을 보장 할 수 있습니다.

3. guzzle에서 curl_upkeep () 유사한 함수를 구현하는 방법은 무엇입니까?

Guzzle의 Curl_upkeep () 와 유사한 효과를 달성하려면 다음을 보장해야합니다.

  1. 연결 풀의 크기를 구성하여 최대 다중 연결을 유지할 수 있는지 확인하십시오.

  2. 요청할 때마다 새로운 TCP 연결을 설정하지 않도록 연결 멀티플렉싱을 설정하십시오 .

  3. 연결 풀 내 연결을 재사용 할 수 있도록 요청 수를 최대화하십시오 .

다음은 Guzzle에서 이러한 구성을 구현하는 방법에 대한 코드 예입니다.

 <?php

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Handler\CurlMultiHandler;

// 사용자 정의를 만듭니다 HandlerStack
$stack = HandlerStack::create(new CurlMultiHandler());

// 연결 풀 및 다중화 된 연결을 구성하십시오
$client = new Client([
    'base_uri' => 'https://m66.net',
    'handler' => $stack,
    'timeout'  => 30,  // 요청 시간 초과를 설정합니다
    'http_errors' => false, // 오류의 자동 던지기를 비활성화합니다
    'connect_timeout' => 5, // 연결 시간 초과를 설정합니다
    'max_requests' => 10,  // 최대를 유지하십시오10동시 요청
    'persistent' => true   // 지속적인 연결을 활성화합니다
]);

// 보내다 GET 묻다
$response = $client->request('GET', '/path/to/resource');

// 응답 내용을 얻으십시오
echo $response->getBody();

설명 :

  • Handlerstack :: Create (New Curlmultihandler ()) :이 코드 라인은 Curlmultihandler를 사용하여 Guzzle 클라이언트를 만듭니다. Curlmultihandler는 병렬 요청과 지속적인 연결을 지원합니다.

  • '영구'=> true : 영구 연결을 활성화합니다. 이런 식으로 Guzzle은 매번 연결을 다시 설정하지 않고도 기존 연결을 재사용합니다.

  • 'max_requests'=> 10 : 연결 풀의 크기를 최대 10 개의 동시 요청으로 설정하십시오.

이러한 설정을 사용하면 Guzzle이 자동으로 HTTP 연결 풀 및 멀티 플렉스 연결을 관리합니다.

4. 연결 풀링에 대한 자세한 내용을 처리합니다

실제 생산 환경에서는 다음과 같은 다른 요소를 고려해야합니다.

  • 동시성 요청 수 : Guzzle이 동시 요청을 처리 할 수 ​​있고 연결 풀의 최대 한계를 초과하지 않도록하십시오.

  • 오류 처리 : 예를 들어, 요청이 실패 할 때 자동 재시도가 필요하는지 여부.

  • 지연 최적화 : 요청의 응답 시간이 길면 시간 초과Connect_Timeout을 적절히 추가 할 수 있습니다.

이러한 구성 항목은 실제 요구에 따라 조정을 조정하여 Guzzle 요청이 효율적이고 안정적으로 실행될 수 있도록 조정할 수 있습니다.

5. 요약

Guzzle의 연결 풀링 및 지속적인 연결 기능을 통해 Curl_upkeep () -유사 효과를 달성 할 수 있습니다. 적절한 구성을 사용하면 요청의 효율성을 확인할 수 있으며 연결 생성 및 파괴의 오버 헤드를 줄일 수 있습니다. Guzzle은 HTTP 연결 풀을 관리하는 강력한 구성 옵션을 제공하여 응용 프로그램이 높은 동시성 환경에서 안정적으로 유지되도록합니다.