guzzle не отправляются асинхронные запросы

121
28 июня 2021, 20:30

Не отправляется асинхронный запрос. Синхронные отправляются.

require 'guzzle/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
// Синхронный запрос
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'http://site.ru');
echo $res->getBody();
// Синхронный запрос работает, все окей
// Асинхронный запрос
$client     = new GuzzleHttp\Client();
$request    = new \GuzzleHttp\Psr7\Request('GET', 'http://site.ru');
$promise    = $client->sendAsync($request)->then(function ($response) {
    echo $response->getBody();
});
// Асинхронный запрос не отправляется, если не вызвать метод wait() у объекта $promise.
// Но если вызвать wait() - то это уже будет не асинхронность, а ждать будем ответа и потом только будет второй запрос
// Если вызвать метод wait у объекта $promise, тогда этот запрос будет ожидать ответа, никакой асинхронности
$promise->wait();

На сайте куда ведёт запрос, я сделал логирование в файл при запросах.

Когда отправляю синхронный запрос ИЛИ вызываю $promise->wait() метод - тогда в файл логируется.

Если я не вызываю $promise->wait(); - не записывается лог, соответственно запроса нет.

Answer 1
$promise->wait(); 

Это ожидание того, что всё идет асинхронно. Ожидаем, когда все потоки завершат свою работу.

READ ALSO
Выбор подхода для написания системы

Выбор подхода для написания системы

Есть ERP система, парусКрутится на oracle базе

99
Создание рпг игры на php

Создание рпг игры на php

Создаю текстовую RPG игру на PHP

103
Как загрузить картинку в папке средствами PHP?

Как загрузить картинку в папке средствами PHP?

Не могу разобраться, как сделать форму загрузки изображений, поддерживающую загрузку, сразу нескольких файловКак я могу это реализовать...

105