HTTP Получить время для ответа

Я играю с guzzle и пытаюсь создать простую страницу, на которую я могу добавить свои домены, и проверить, доступны ли они в настоящее время.

В настоящее время я могу проверить, находится ли массив/список доменов в сети или он по какой-то причине отклонен. Я хотел бы также иметь возможность видеть в своем журнале / БД, сколько времени требуется от отправки HTTP-запроса на [mydomain.com] до получения ответа.

Текущий код:

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Pool;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Response;

if (!empty($aDomains))
{       
    $oClient            = new Client(['expect' => false]);
    $aAcceptedResponse  = [];
    $aRejectedResponses = [];
    $aCreatedRequests    = [];
    

    foreach ($aDomains as $iDomainKey => $sDomain) 
    {          
        array_push($aCreatedRequests, new Request('GET', $sDomain));
    }

    $pool = new Pool($oClient, $aCreatedRequests, 
    [
        'concurrency' => 50,
        'options' => ['timeout' => 10],
        'fulfilled'   => function ($response, $index) use (&$aAcceptedResponse) 
        {
            $aAcceptedResponse[] = $index;
        },
        'rejected'    => function ($reason, $index) use(&$aRejectedResponses)  
        {
            $aRejectedResponses[] = $index;
        },
    ]);

    $promise = $pool->promise();
    $promise->wait();
}  

Я подумал, что смогу найти что-то в объекте ответа на глотание, но пока мне ничего не удалось найти - я слепой или это невозможно увидеть?

Ответ не может содержать такую ​​информацию, поскольку он не знает точного момента отправки запроса. Все, что другая сторона знает, это когда она получила запрос. Вы должны измерить это вручную. Это должно помочь вам начать.

El_Vanja 14.12.2020 01:45

ищите on_stats в документах, у него есть функция getTransferTime() даст вам время проверить в документах

bhucho 14.12.2020 18:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
478
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Благодаря ответу El_Vanja я понял это, просто используя глобальную метку времени:

    $iStartExecutionTime = microtime(true);
    $oClient             = new Client(['expect' => false]);
    $aAcceptedResponse   = [];
    $aRejectedResponses  = [];
    $aCreatedRequests    = [];      

    foreach ($aDomains as $iDomainKey => $oDomain) 
    {          
        array_push($aCreatedRequests, new Request('GET', $oDomain->sDomainName));
        update_domain_uptime_monitor($oDomain->iID, 1, date('Y-m-d H:i:s', strtotime('NOW')+$oDomain->iInterval), date('Y-m-d H:i:s', strtotime('NOW')));
    }

    $pool = new Pool($oClient, $aCreatedRequests, 
    [
        'concurrency' => 50,
        'options' => ['timeout' => 10],
        'fulfilled'   => function ($response, $index) use (&$aAcceptedResponse) 
        {               
            $aAcceptedResponse[$index] = (microtime(true)-$GLOBALS['iStartExecutionTime']);
        },
        'rejected'    => function ($reason, $index) use(&$aRejectedResponses)  
        {
            $aRejectedResponses[] = $index;
        },
    ]);

    $promise = $pool->promise();
    $promise->wait();
    

Другие вопросы по теме