PHP에서 Curl_upkeep ()은 요청이 시작될 때마다 연결 및 종료의 오버 헤드를 줄이기 위해 지속적인 연결 풀을 유지하는 기능입니다. HTTP 요청에 Guzzle을 사용하는 경우 Guzzle 자체는 직접 Curl_Upkeep () 기능을 제공하지 않지만 Guzzle의 구성 옵션과 적절한 연결 풀링 메커니즘을 사용 하여이 효과를 시뮬레이션 할 수 있습니다. 이 기사는 Guzzle에서 유사한 기능을 구현하는 방법을 설명합니다.
Curl_upkeep () 는 PHP의 컬 확장에 사용되는 기능으로 지속적인 연결을 유지하여 열린 연결을 재사용하여 효율성을 향상시킵니다. 이 접근법은 각 요청과의 연결을 재건하는 것과 비교하여 요청의 대기 시간 및 대역폭 소비를 크게 줄입니다.
Guzzle은 Curl_upkeep () 의 기능과 유사한 지속적인 연결 및 연결 풀의 관리를 지원하는 강력한 HTTP 클라이언트 라이브러리입니다. Guzzle의 HTTP 클라이언트를 구성하여이를 달성 할 수 있습니다.
Guzzle에서 연결 풀의 관리는 Handlerstack 및 Curlmultihandler를 통해 구현됩니다. 요청이 전송 될 때마다 Guzzle은 Curl_upkeep () 의 함수와 같습니다.
Guzzle에서는 Max_Requests 및 지속적인 구성을 통해 연결 풀의 동작을 제어 할 수 있습니다. 이러한 구성 항목을 사용하면 연결 풀의 크기, 재사용 정책 등을 최적화하여 요청의 효율성을 보장 할 수 있습니다.
Guzzle의 Curl_upkeep () 와 유사한 효과를 달성하려면 다음을 보장해야합니다.
연결 풀의 크기를 구성하여 최대 다중 연결을 유지할 수 있는지 확인하십시오.
요청할 때마다 새로운 TCP 연결을 설정하지 않도록 연결 멀티플렉싱을 설정하십시오 .
연결 풀 내 연결을 재사용 할 수 있도록 요청 수를 최대화하십시오 .
다음은 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 연결 풀 및 멀티 플렉스 연결을 관리합니다.
실제 생산 환경에서는 다음과 같은 다른 요소를 고려해야합니다.
동시성 요청 수 : Guzzle이 동시 요청을 처리 할 수 있고 연결 풀의 최대 한계를 초과하지 않도록하십시오.
오류 처리 : 예를 들어, 요청이 실패 할 때 자동 재시도가 필요하는지 여부.
지연 최적화 : 요청의 응답 시간이 길면 시간 초과 및 Connect_Timeout을 적절히 추가 할 수 있습니다.
이러한 구성 항목은 실제 요구에 따라 조정을 조정하여 Guzzle 요청이 효율적이고 안정적으로 실행될 수 있도록 조정할 수 있습니다.
Guzzle의 연결 풀링 및 지속적인 연결 기능을 통해 Curl_upkeep () -유사 효과를 달성 할 수 있습니다. 적절한 구성을 사용하면 요청의 효율성을 확인할 수 있으며 연결 생성 및 파괴의 오버 헤드를 줄일 수 있습니다. Guzzle은 HTTP 연결 풀을 관리하는 강력한 구성 옵션을 제공하여 응용 프로그램이 높은 동시성 환경에서 안정적으로 유지되도록합니다.