Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Події
Інше
Про нас
Новини 02 липня 2026

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

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

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

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

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

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

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

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.

1

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Маскування параметрів
Новини 29 серпня 2026

Маскування параметрів запитів у повідомленнях про помилки Laravel

Laravel 13.27 додає можливість приховувати значення параметрів у SQL-запитах при виникненні помилок. Це запобігає потраплянню чутливих даних у логи, таблиці failed_jobs та системи моніторингу.

refreshForUpdate()
Новини 29 серпня 2026

Песимістичне блокування в Laravel Eloquent з методом refreshForUpdate()

Laravel 13.27 додає новий метод refreshForUpdate() для Eloquent, який дозволяє одночасно перезавантажити модель з бази даних та застосувати блокування FOR UPDATE. Це спрощує роботу з песимістичним блокуванням у транзакціях.

1

Пакети за темою

Laravel Debugbar

barryvdh/laravel-debugbar

Інтеграція PHP Debugbar у Laravel для відлагодження та аналізу роботи додатку.

19,283 v4.4.2 13 8

Collision

nunomaduro/collision

Читабельні повідомлення про помилки в консолі: акуратний стек-трейс із підсвіченим кодом замість стіни тексту. Входить у стандартну поставку Laravel і працює разом із Pest та PHPUnit.

4,657 v8.9.5 2