Laravel Time Machine est un profileur du cycle de vie des requêtes créé par le développeur Jaydeep Gadhiya. Il enregistre chaque étape d'une requête Laravel — démarrage du framework, middleware, routage, exécution du contrôleur, réponse et étape de terminaison — avec une précision à la milliseconde, répondant à la question de savoir où le temps est passé.

Le package construit une chronologie de type Gantt pour chaque requête et peut capturer chaque requête SQL avec ses bindings, le nom de connexion et le temps d'exécution, via l'option activable collectors.queries. Par défaut, les requêtes dépassant 500ms et les requêtes SQL dépassant 50ms sont signalées comme lentes, les deux seuils étant configurables. Les profils sont stockés sous forme de fichiers JSON dans storage/time-machine plutôt que dans des tables de base de données, évitant ainsi toute migration. Des motifs d'exclusion permettent d'ignorer les requêtes d'assets ou des chemins comme le tableau de bord Telescope. Le profileur suit APP_DEBUG et reste désactivé en production sauf activation explicite.

Une fois installé, un tableau de bord autonome est servi à /time-machine, affichant une chronologie visuelle par requête ainsi que l'utilisation mémoire et le nombre de requêtes, les requêtes lentes étant mises en évidence dans la liste.

Les développeurs peuvent instrumenter leur propre code via la façade TimeMachine : TimeMachine::mark() dépose un marqueur temporel, TimeMachine::measure() chronomètre une closure, et TimeMachine::startSpan()/endSpan() permettent un contrôle manuel des spans — utile pour suivre par exemple un appel API externe aux côtés des phases du framework.

Par défaut, le package conserve les 100 profils les plus récents et supprime automatiquement les plus anciens ; cette limite est ajustable via le paramètre storage.max_records ou la variable d'environnement TIME_MACHINE_MAX_RECORDS.

Comparé à Laravel Telescope et Laravel Debugbar, Time Machine se situe entre les deux : Telescope surveille un périmètre plus large de l'application (requêtes, jobs, mails, notifications, cache) et stocke ses données en base ; Debugbar affiche les données de timing et de requêtes uniquement pour la page en cours. Time Machine conserve un historique consultable comme Telescope, mais limite son périmètre au timing du cycle de vie et aux requêtes, stockés dans des fichiers plats.

Le package prend en charge Laravel 8 à 13 et s'installe via Composer (composer require jaydeep/laravel-time-machine) avec auto-discovery pour le service provider et la façade ; la publication du fichier de configuration via php artisan vendor:publish --tag=time-machine-config est optionnelle. Le code source est disponible sur GitHub sous JaydeepGadhiya/laravel-timemachine.