>PHP 프레임워크 >Laravel >laravel guzzle 비동기 요청 문제에 대해 이야기

laravel guzzle 비동기 요청 문제에 대해 이야기

PHPz
PHPz원래의
2023-04-12 09:13:341418검색

Laravel Guzzle은 Laravel 프레임워크의 HTTP 클라이언트로, 쉽게 HTTP 요청을 보내고 HTTP 응답을 얻을 수 있는 간단하고 강력한 인터페이스를 제공합니다. 특히 비동기식 요청 시나리오에서 Laravel Guzzle은 성능과 응답 속도를 향상시킬 수 있습니다.

일반적으로 우리는 HTTP 클라이언트를 통해 서버와 통신하고, 엔터티 또는 요청 매개변수를 전달한 다음, 아래와 같이 서버로부터 응답을 받아야 합니다.

$client = new Client(['base_uri' => 'http://httpbin.org']);
$response = $client->request('GET', '/get', ['timeout' => 2]);
echo $response->getBody();

이 예에서는 Guzzle의 클라이언트 클래스를 사용하여 기본 URI는 httpbin.org 웹 사이트를 가리키며 제한 시간이 2초로 설정된 GET 요청을 생성합니다. 그런 다음 $response->getBody() 메소드를 통해 응답 내용을 가져옵니다.

그러나 대규모 일괄 요청을 해야 하는 경우 이 동기식 요청 방식은 서버 리소스를 빠르게 소모하고 서비스 성능과 응답 속도를 저하시킵니다. 이 시점에서는 비동기 요청이 도움이 될 수 있습니다.

비동기 요청은 서버의 응답을 기다릴 필요가 없고 요청을 서버에 배포한 후 후속 작업을 계속하기만 하면 되는 요청을 의미합니다. 서버가 요청에 응답하면 특정 방식으로 응답 콘텐츠를 얻습니다. 이러한 접근 방식은 서비스 성능과 응답 속도를 크게 향상시킬 수 있습니다.

다음으로 Laravel Guzzle이 비동기 요청을 구현하는 방법을 살펴보겠습니다.

$client = new \GuzzleHttp\Client();
$promises = [
    $client->getAsync('http://httpbin.org/get'),
    $client->getAsync('http://httpbin.org/get?foo=bar'),
    $client->getAsync('http://httpbin.org/get?baz=qux')
];

$results = GuzzleHttp\Promise\unwrap($promises);

foreach ($results as $result) {
    echo $result->getBody();
}

이 예에서는 Guzzle의 getAsync 메서드를 사용하여 비동기 요청을 보내고 반환된 promise 개체를 $promises 배열에 넣습니다. 응답 콘텐츠를 가져와야 하는 경우 Guzzle의 unwrap 메서드를 사용하여 모든 Promise의 결과를 얻은 다음 결과를 반복하고 $result->getBody() 메서드를 통해 응답 콘텐츠를 가져옵니다.

요약하자면 Laravel 프레임워크의 HTTP 클라이언트인 Laravel Guzzle은 비동기 요청에서 우수한 성능을 발휘하며 서비스 성능과 응답 속도를 향상시키는 데 도움을 줄 수 있습니다. 비동기식 요청은 대규모 일괄 요청을 수행해야 할 때 매우 좋은 솔루션입니다.

위 내용은 laravel guzzle 비동기 요청 문제에 대해 이야기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.