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

Перекладено ШІ 0 Laravel News 02 липня, 2026

Laravel 13.18.0 впроваджує детальну аналітику черг через подію WorkerStopping та гарантує безпечне завершення процесів у schedule:work. Оновлення також пропонує гнучку систему пріоритетів для artisan dev та виправляє критичні помилки у роботі Number helpers.

У Laravel 13.18.0 додали метрики воркерів до події WorkerStopping, реалізували коректну обробку сигналів для schedule:work, запровадили пріоритетність при реєстрації команд artisan dev та випустили низку виправлень для хелперів Number, кешу та планувальника.

  • Додано лічильник оброблених джобів та таймстамп останньої операції в подію WorkerStopping
  • schedule:work тепер перехоплює сигнали завершення та дає активним процесам допрацювати
  • Пріоритетність реєстрації для dev-команд та прапорець --kill-others-on-fail для artisan dev
  • Number::forHumans(), Number::abbreviate() та Number::fileSize() більше не викликають помилок при отриманні INF або NAN
  • Умовні типи повернення та синхронізація дженериків для геттерів і властивостей у декількох методах
  • Виправлено кеш-заголовки для HEAD-запитів, оптимізовано читання кешу для debounced jobs та усунуто колізії у TaggedCache

# Що нового

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

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

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

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

Дивіться #60592 та доповнення у #60608.

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

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

Дивіться #60616.

# Пріоритетність реєстрації dev-команд

Команди для artisan dev тепер враховують джерело походження: ваш застосунок, пакет чи фреймворк. У разі збігу імен пріоритет надається коду користувача, потім — вендорним пакетам і лише потім — стандартам фреймворка, незалежно від черговості завантаження сервіс-провайдерів.

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

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

Дивіться #60580 та #60606.

# Хелпери Number тепер стійкі до INF та NAN

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

Дивіться #60617 та #60625.

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

  • Оптимізовано кількість звернень до кешу для debounced jobs (#60575)
  • Виправлено відсутність кеш-заголовків для HEAD-запитів (#60589)
  • Подія restored більше не спрацьовує, якщо відновлення після Soft Delete завершилося невдачею (#60605)
  • Виправлено помилку серіалізації releaseAfter у методі __sleep() для middleware RateLimited (#60609)
  • Усунуто колізії тегів при використанні flexible() локів у TaggedCache (#60626)
  • Виправлено парсинг JSON для тіл запитів, що містять лише нуль (#60614)
  • Додано умовні типи повернення для низки методів (#60586) та синхронізовано типи геттерів із дженериками властивостей (#60591)

Посилання

Популярні

Інше, що варто прочитати

10 Оновлено 26 червня, 2026

Усе, що ми знаємо про Laravel 12

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

13 Оновлено 26 червня, 2026

Генерація документації в Laravel за допомогою штучного інтелекту

Docudoodle — це потужний пакет для генерації документації в Laravel, який допомагає легко аналізувати вашу кодову базу та створювати документацію за допомогою обраного вами AI. Чи готові ви дізнатися, як цей інструмент може спростити вашу роботу з документуванням коду? Читайте далі!

15 Оновлено 26 червня, 2026

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше