---
title: "Метрики воркерів у події WorkerStopping у Laravel 13.18"
url: https://laravelukraine.com/blog/metriki-vorkeriv-u-podiyi-workerstopping-u-laravel-1318
author: "Олексій Бабінцев"
date: 2026-07-02
source: https://laravel-news.com/laravel-13-18-0?utm_medium=feed&utm_source=feedpress.me&utm_campaign=Feed%3A+laravelnews
---

# Метрики воркерів у події WorkerStopping у Laravel 13.18

Laravel 13.18.0 приносить важливі покращення для роботи з чергами, планувальником завдань та інструментами розробки. Оновлення включає метрики воркерів, коректне завершення процесів за сигналами, пріоритетну систему реєстрації команд та виправлення критичних помилок у Number-хелперах.

## Метрики воркерів у події WorkerStopping

Подія `WorkerStopping` тепер передає дві додаткові метрики, які описують роботу воркера перед його зупинкою: `jobsProcessed` - кількість оброблених завдань протягом життєвого циклу воркера, та `lastJobProcessedAt` - мікросекундна мітка часу останнього обробленого завдання. Обидві метрики заповнюються незалежно від того, зупинився воркер штатно чи був примусово завершений.

```php
use Illuminate\Queue\Events\WorkerStopping;
Event::listen(function (WorkerStopping $event) {
    $event->jobsProcessed;      // int|null
    $event->lastJobProcessedAt; // int|float|null (microtime), null якщо нічого не оброблено
});
```

Це дає змогу записувати продуктивність кожного воркера або відправляти метрики при завершенні демона без необхідності інструментувати цикл обробки завдань самостійно. Якщо воркер зупиняється до обробки будь-яких завдань, `lastJobProcessedAt` залишається `null`.

## Коректне завершення для schedule:work

Команда `schedule:work` тепер перехоплює сигнали `SIGINT`, `SIGTERM` та `SIGQUIT`. При отриманні сигналу вона припиняє запуск нових запланованих завдань і чекає завершення поточного процесу `schedule:run` перед виходом, повторюючи існуючу поведінку `queue:work`. Це особливо важливо в контейнерних середовищах як Kubernetes, де поди отримують `SIGTERM` при завершенні, а попередня поведінка могла переривати виконувані завдання.

## Пріоритетна реєстрація команд для artisan dev

Команди розробки, зареєстровані для `artisan dev`, тепер відстежують своє походження (ваш застосунок, vendor-пакет або сам фреймворк) і реєструються з відповідним пріоритетом. Коли кілька команд мають однакову назву, реєстрації з користувацького коду перемагають над vendor-версіями, які в свою чергу мають пріоритет над стандартними командами фреймворка, незалежно від порядку завантаження сервіс-провайдерів.

```php
use Illuminate\Foundation\Console\DevCommands;
DevCommands::artisan('reverb:start --host="0.0.0.0"', 'reverb');
```

Це замінює попередній підхід з блокуванням автореєстрації vendor-команд на явну систему пріоритетів, тому ваші перевизначення завжди спрацьовують. Крім того, `artisan dev` тепер запускається з опцією `--kill-others-on-fail`, тож якщо один процес у групі падає, решта зупиняються замість того, щоб продовжувати працювати.

## Захист Number-хелперів від INF/NAN

Методи `Number::forHumans()` та `Number::abbreviate()` раніше викидали помилку при передачі значень `INF` або `NAN`, і `Number::fileSize()` мав ту саму проблему. Обидва випадки виправлено, тож ці значення тепер опрацьовуються коректно без викидання винятків.

## Інші виправлення та покращення

Версія включає низку додаткових виправлень:

- Додатково зменшено кількість звернень до кешу при використанні debounced jobs
- Виправлено встановлення заголовків кешу для HEAD-запитів
- Заборонено спрацювання події `restored` коли відновлення після soft-delete не вдається
- Виправлено серіалізацію параметра `releaseAfter` у middleware `RateLimited` в методі `__sleep()`
- Усунено колізії міток для `flexible()` lock та defer у `TaggedCache`
- Виправлено парсинг JSON для тіл верхнього рівня з нульовими значеннями
- Додано умовні типи повернення до кількох методів та синхронізовано типи повернення геттерів з дженериками їхніх властивостей

Повний список змін доступний в офіційному changelog та release notes на GitHub.
