подсчитать общее количество запросов к базе данных, сделанных для всего приложения Laravel [закрыто]

avatar
laxit
8 августа 2021 в 17:14
84
1
0

Каждое действие в приложении Laravel инициируется через запрос маршрута, будь то отправка или получение. Я хотел бы подсчитать общее количество раз, когда мое приложение Laravel взаимодействовало с базой данных. если возможно, были бы полезны некоторые способы измерения среднего времени запроса.

Мне известно о php artisan route:list, но мне нужна лучшая альтернатива, которую я могу представить кому-нибудь для принятия решения.

Источник
Eric Qvarnström
8 августа 2021 в 17:46
0

Вы хотите узнать количество взаимодействий за заданный интервал времени или больше похоже на возрастающее целое число в базе данных?

laxit
8 августа 2021 в 18:07
0

Временные рамки не являются ограничением, я в основном хочу отображать, сколько ресурсов использует мое приложение, поскольку поставщик базы данных взимает плату за взаимодействие. Я хочу внедрить Redis и хочу убедить их, сообщив им, сколько запросов мы делаем, и с помощью Redis мы можем в основном хранить данные, от которых зависит большая часть цикла приложения.

matiaslauriti
8 августа 2021 в 18:28
1

@laxit используйте пакет barryvdh/laravel-debugbar или вы также можете попробовать использовать itsgoingd/clockwork.

Ответы (1)

avatar
Aken Roberts
8 августа 2021 в 18:46
2

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

https://laravel.com/docs/8.x/database#listening-for-query-events

Если вы хотите указать замыкание, которое вызывается для каждого SQL-запроса, выполняемого вашим приложением, вы можете использовать метод фасада БД listen. Этот метод может быть полезен для регистрации запросов или отладки. Вы можете зарегистрировать закрытие прослушивателя запросов в методе boot поставщика услуг:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        DB::listen(function ($query) {
            // $query->sql;
            // $query->bindings;
            // $query->time;
        });
    }
}