Laravel Time Machine: профайлер для аналізу Request Lifecycle

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

Бажаєте нарешті з’ясувати, куди зникають мілісекунди під час обробки запитів у вашому Laravel-додатку? Новий профайлер Laravel Time Machine візуалізує весь життєвий цикл запиту та миттєво підсвічує вузькі місця.

Laravel Time Machine — це профілер продуктивності від Jaydeep Gadhiya, який фіксує кожен етап запиту в Laravel: bootstrap, middleware, routing, controller, response та termination. Інструмент вимірює час із точністю до мілісекунд, даючи вичерпну відповідь на питання: на що саме витрачається час під час обробки запиту?

Основні можливості пакета:

  • Таймлайн життєвого циклу — візуалізація у стилі діаграми Gantt для кожної фази запиту, від завантаження фреймворку до етапу terminate.
  • Логування запитів — фіксація кожного SQL-запиту разом із bindings, connection та часом виконання (налаштовується через collectors.queries).
  • Підсвічування повільних процесів — запити тривалістю понад 500 мс та SQL-запити понад 50 мс маркуються автоматично (порогові значення можна змінити).
  • Зберігання у файлах — профілі зберігаються як звичайні JSON-файли в директорії storage/time-machine; жодних таблиць у базі даних чи міграцій.
  • Ігнорування шляхів — запити до статичних файлів (assets) або технічних сторінок (наприклад, дашборд Telescope) автоматично пропускаються завдяки параметру ignore_paths.
  • Тільки для розробки — за замовчуванням профілер орієнтується на значення APP_DEBUG, тому він не активується на production без спеціального налаштування.

# Дашборд із таймлайном

Після встановлення пакет автоматично реєструє кожен HTTP-запит і відображає дані на автономному дашборді за адресою /time-machine. Для кожного запиту створюється візуальний таймлайн, що показує тривалість фаз життєвого циклу програми, використання пам’яті та кількість SQL-запитів. Повільні запити підсвічуються у списку, що дозволяє миттєво виявляти вузькі місця.

# Кастомні вимірювання

Окрім автоматичного моніторингу фаз фреймворку, ви можете додавати власні вимірювання за допомогою фасаду TimeMachine. Це дозволяє ставити маркери в коді, вимірювати час виконання closure або керувати інтервалами (spans) вручну:

use Jaydeep\LaravelTimeMachine\Facades\TimeMachine;
 
// Додати маркер на таймлайн
TimeMachine::mark('cache primed');
 
// Виміряти час виконання блоку коду
$report = TimeMachine::measure('generate-report', function () {
    return Report::build();
});
 
// Ручне керування інтервалом
TimeMachine::startSpan('external-api');
$response = Http::get('https://api.example.com');
TimeMachine::endSpan('external-api');

Користувацькі інтервали відображаються на тому ж таймлайні, що і системні фази, тож ви зможете побачити, як тривалий виклик зовнішнього API або генерація звіту впливають на загальний час запиту.

# Робота без бази даних

Профілі записуються як JSON-файли в storage/time-machine, тому вам не потрібно запускати міграції, а дані ніколи не залишають ваш сервер. Пакет за замовчуванням зберігає останні 100 профілів, видаляючи старі в міру надходження нових. Цей ліміт можна змінити в налаштуваннях storage.max_records або через змінну оточення TIME_MACHINE_MAX_RECORDS.

# Порівняння з Telescope та Debugbar

Laravel Time Machine частково перетинається з Telescope та Debugbar, проте ці інструменти мають різне призначення. Telescope забезпечує комплексний моніторинг (запити, черги, пошта, кеш) і зберігає дані в базі. Debugbar виводить панель інструментів безпосередньо на сторінку для поточного запиту.

Time Machine займає проміжну нішу: він зберігає історію останніх запитів, як Telescope, але фокусується виключно на часових показниках життєвого циклу та SQL-запитах, використовуючи для зберігання файли. Якщо вам потрібен повний моніторинг застосунку — обирайте Telescope; якщо ж ваша мета — детально профілювати час виконання окремих запитів, цей пакет підійде ідеально.

# Встановлення та налаштування

Пакет підтримує версії Laravel від 8 до 13. Встановлюється через Composer, а сервіс-провайдер та фасад підключаються автоматично завдяки auto-discovery:

composer require jaydeep/laravel-time-machine

За потреби можна опублікувати файл конфігурації:

php artisan vendor:publish --tag=time-machine-config

Дізнатися більше, переглянути повну інструкцію та вихідний код можна в GitHub-репозиторії laravel-timemachine.

Популярні

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

Використання повнотекстового пошуку в Laravel
178 Оновлено 26 червня, 2026

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

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

Створення MCP-серверів на PHP

Модельний контекстний протокол (MCP) відкриває нові горизонти в інтеграції AI-додатків з PHP. Дізнайтеся, як легко створити сервер, що відповідає MCP, та які можливості відкриваються для вашого проєкту

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

Обробка геопросторових даних за допомогою Laravel Magellan

Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!