Как получить время ответа на запрос в Eloquent? - PullRequest
0 голосов
/ 08 октября 2019

Пожалуйста, как мне получить время ответа при выполнении красноречивого запроса? например:

$arf = App\Roles::where('description','test')->get()  

Спасибо

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Вы потенциально можете использовать журнал запросов.

DB::enableQueryLog();
// ... query
dump(DB::getQueryLog());

В журнале должно быть указано время для запросов.

1 голос
/ 08 октября 2019

Сам Laravel определяет microtime в index.php

define('LARAVEL_START', microtime(true));

Таким образом, вы должны сделать то же самое после запроса и вычислить разницу

$begin = microtime(true);
$arf = App\Roles::where('description','test')->get();
$end = microtime(true) - $begin;

Теперь $endвремя отклика

Сравнение с глобально определенным микровремени может быть неточным, поскольку запросы HTTP проходят через конвейер для достижения запроса

Вы также можете прослушивать события запроса идоступ ко времени

из документов

\DB::listen(function ($query) {
      info('Query took ' . $query->time);
});

И это идет от Illuminate\Database\Events\QueryExecuted здесь

<?php

namespace Illuminate\Database\Events;

class QueryExecuted
{
    /**
     * The SQL query that was executed.
     *
     * @var string
     */
    public $sql;

    /**
     * The array of query bindings.
     *
     * @var array
     */
    public $bindings;

    /**
     * The number of milliseconds it took to execute the query.
     *
     * @var float
     */
    public $time;

    /**
     * The database connection instance.
     *
     * @var \Illuminate\Database\Connection
     */
    public $connection;

    /**
     * The database connection name.
     *
     * @var string
     */
    public $connectionName;

    /**
     * Create a new event instance.
     *
     * @param  string  $sql
     * @param  array  $bindings
     * @param  float|null  $time
     * @param  \Illuminate\Database\Connection  $connection
     * @return void
     */
    public function __construct($sql, $bindings, $time, $connection)
    {
        $this->sql = $sql;
        $this->time = $time;
        $this->bindings = $bindings;
        $this->connection = $connection;
        $this->connectionName = $connection->getName();
    }
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...