Des nouvelles ont été ajoutées en tête de listes.
Remontez pour les voir.
Inscription à la newsletter
Profiler un consumer avec Blackfire
JoliCode - JoliCodeBlog -
02/07
Quand on parle de profiling PHP avec Blackfire, on pense généralement à une requête HTTP : un clic sur l'extension navigateur, et hop, le profil apparaît. Mais que faire quand le code à profiler tourne dans un
Quand on parle de profiling PHP avec Blackfire, on pense généralement à une requête HTTP : un clic sur l’extension navigateur, et hop, le profil apparaît. Mais que faire quand le code à profiler tourne dans un consumer ou un worker ; une commande Symfony qui boucle indéfiniment, consommant une queue ou traitant des tâches en background ? La bonne nouvelle : Blackfire peut fonctionner dans ce contexte. La moins bonne : on ne peut pas déclencher le profiling au moment où ça nous arrange… sauf si on utilise les signaux POSIX.
Info
Cet article s’appuie sur les signaux POSIX. Si vous n’êtes pas familier avec ce concept, je vous invite à lire d’abord Les signaux POSIX et PHP qui pose les bases nécessaires.
Section intitulée le-problemeLe problème
Un consumer PHP ressemble souvent à ça :
while (true) { $message = $queue->consume(); if (!$message) { sleep(1); continue; } $this->process($message); }
Il tourne en permanence. On ne contrôle pas quand l’itération commence ni quand elle finit. Déclencher Blackfire depuis l’extérieur sans interrompre le traitement en cours, c’est précisément le défi.
La solution : envoyer un signal UNIX au processus pour lui dire « commence à profiler » puis un second signal pour lui dire « arrête-toi et envoie le profil ».
Section intitulée installation-de-blackfireInstallation de Blackfire
L’installation de Blackfire se fait via Composer :
composer require blackfire/php-sdk
Section intitu... [Courte citation de 8% de l'article original]
Loading...
🍪
Le modèle économique de notre site repose sur l'affichage de publicités personnalisées basées sur l'utilisation de cookies publicitaires. En continuant votre visite sur notre site, vous consentez à l'utilisation de ces cookies.
Politique de confidentialité