Метрики воркера в події `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)

Посилання

Популярні

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

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

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

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

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

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

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

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

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту