Легко відстежувати метрики за допомогою методів Context Increment та Decrement у Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 10 травня, 2025
Laravel вдосконалює свою систему контексту новими методами інкременту та декременту, які спрощують відстеження лічильників та метрик у вашій програмі. Дізнайтеся, як використання цих методів дозволяє розробникам легко керувати числовими значеннями і зберігати чистоту коду без ускладнень

Laravel покращив свою систему Context новими методами increment та decrement, які пропонують елегантні рішення для відстеження лічильників і метрик у вашій аплікації без складного управління станом

Тепер система Context дозволяє розробникам легко підтримувати числові значення, використовуючи простий та зрозумілий синтаксис:

// Ініціалізація або збільшення лічильника
Context::increment('downloads'); // 1
Context::increment('downloads'); // 2
 
// Збільшення на певну величину
Context::increment('downloads', 5); // 7
 
// Зменшення лічильників
Context::decrement('active_sessions'); // -1
Context::decrement('available_tokens', 3); // -3

Ці методи особливо корисні для моніторингу метрик аплікації або споживання ресурсів:

class DocumentController extends Controller
{
    public function download(Request $request, $id)
    {
        // Збільшення загальної кількості спроб завантаження
        Context::increment('metrics.download_attempts');
 
        try {
            // Перевірка прав користувача
            $request->validate([
                'subscription' => 'required|active',
            ]);
 
            $document = Document::findOrFail($id);
 
            // Збільшення кількості успішних завантажень
            Context::increment('metrics.successful_downloads');
 
            // Відстеження використання пропускної здатності
            $size = $document->size;
            Context::increment('metrics.total_bandwidth', $size);
 
            return Storage::download($document->path);
        } catch (ValidationException $e) {
            // Збільшення лічильника відмов через відсутність прав
            Context::increment('metrics.permission_rejections');
            throw $e;
        } catch (\Exception $e) {
            // Збільшення лічильника помилок
            Context::increment('metrics.download_errors');
            throw $e;
        }
    }
}

Мідлвар може захоплювати та фіксувати ці метрики по завершенню запиту:

class MetricsLoggerMiddleware
{
    public function handle($request, $next)
    {
        $response = $next($request);
 
        // Фіксація метрик по завершенню запиту
        $this->logMetrics();
 
        return $response;
    }
 
    protected function logMetrics()
    {
        // Збір метрик з контексту
        $downloadAttempts = Context::get('metrics.download_attempts', 0);
        $successfulDownloads = Context::get('metrics.successful_downloads', 0);
        $permissionRejections = Context::get('metrics.permission_rejections', 0);
        $downloadErrors = Context::get('metrics.download_errors', 0);
        $totalBandwidth = Context::get('metrics.total_bandwidth', 0);
 
        // Логування зібраних метрик
        Log::info('Download Metrics', [
            'attempts' => $downloadAttempts,
            'successful' => $successfulDownloads,
            'permission_denied' => $permissionRejections,
            'errors' => $downloadErrors,
            'bandwidth_used' => $totalBandwidth,
        ]);
    }
}

Ці нові методи Context забезпечують чисту та зручну імплементацію лічильників у системах Laravel без потреби у глобальних змінних або складних схемах трекінгу стану

Популярні

Logomark Logotype

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!

Logomark Logotype

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу