Пакет ChronoTrace для Laravel дозволяє детерміністично фіксувати та відтворювати запити до Laravel, а також генерувати тести з виробничих трас. Цей пакет допоможе вам відстежувати зовнішні HTTP-запити під час виконання, включаючи деталі запитів і відповідей, коди статусів, проблеми з підключенням та багато іншого. Він також відслідковує запити до бази даних, події кешу, черги робіт та користувацькі події.
Після захоплення траси ви можете відтворити її, щоб переглянути всю зібрану інформацію (яка налаштовується) під час трасування:
=== ІНФОРМАЦІЯ ПРО ТРАСУ ===
🆔 ID Траси: a1b2c3d4-e5f6-7890-abcd-ef1234567890
🕒 Часова мітка: 2024-01-15 14:30:22
🌍 Середовище: local
🔗 URL запиту: http://localhost:8000/api/users
📊 Статус відповіді: 200
⏱️ Тривалість: 245ms
💾 Використання пам'яті: 18.45 KB
=== ЗАХОПЛЕНІ ПОДІЇ ===
📊 ПОДІЇ БАЗИ ДАНИХ
🔍 [14:30:22.123] Запит: SELECT * FROM users WHERE active = ? (15ms на mysql)
🔍 [14:30:22.145] Запит: SELECT * FROM roles WHERE user_id IN (?, ?, ?) (8ms на mysql)
🗄️ ПОДІЇ КЕШУ
❌ [14:30:22.120] Програш кешу: users:list (сховище: redis)
💾 [14:30:22.150] Запис кешу: users:list (сховище: redis)
🌐 HTTP ПОДІЇ
📤 [14:30:22.200] HTTP Запит: GET https://api.external.com/validation
📥 [14:30:22.230] HTTP Відповідь: GET https://api.external.com/validation → 200
📈 РЕЗЮМЕ ПОДІЙ
📊 Події бази даних: 2
🗄️ Події кешу: 2
🌐 HTTP події: 2
⚙️ Події робочих задач: 0
📝 Всього подій: 6
Ще одна цікава функція — це можливість генерувати тест із конкретної зафіксованої траси. Частоту запису можна налаштувати: завжди, частковий рівень, тільки для помилок тощо. Коли у вас є траса, яку ви хочете перетворити на тест, ви можете запустити команду відтворення з прапором --generate-test
:
php artisan chronotrace:replay a1b2c3d4 \
--generate-test \
--test-path=tests/Integration
Рекомендую ознайомитися з прикладами Основного використання, які демонструють реальні варіанти використання цього пакету. Приклади застосування ілюструють поширені робочі процеси, такі як розробка, розслідування помилок тощо.
Почати роботу з цим пакетом можна на GitHub: Grazulex/laravel-chronotrace.
Щоб встановити його у своєму додатку (Laravel v12.x+ та PHP 8.3+) з Composer, додайте його як залежність для розробки і виконайте команду встановлення:
composer require --dev grazulex/laravel-chronotrace
php artisan chronotrace:install