Comment afficher le pourcentage de traitement d’un script php en couleur dans le terminal.
Lors de l’exécution d’un script un peu lourd, il est parfois nécessaire d’afficher le pourcentage de traitement dans son terminal (surtout pour savoir si on a encore le temps d’aller se chercher un café).

Et pour cela on utilise les séquences d’échappement ANSI dans notre code.
On va prendre l’exemple d’un foreach, le code :
<?php
/** test de script affichage en console*/
$array = ['mon','tableau','avec','plein','de','valeurs'];
/** initialisation du total et du compteur de lignes */
$total = count($array);
$i = 0;
/** message de début de traitement */
echo "\ndebut traitement\r\n";
/** boucle de traitement */
foreach ($array as $item)
{
$i++;
/** calcul du pourcentage de traitement */
$pourcent = round(($i / $total) * 100,2);
/** affichage du pourcentage de traitement */
echo "\033[31m ".$pourcent." % \r";
}
/** en sortie de boucle on affiche 100% en vert */
echo "\033[32m 100 % \033[0m \r\n";
echo "\nfin traitement\r\n";
?>
Pour afficher en couleur dans le terminal notre echo est composé de 3 blocs :
- \033[32m pour changer la couleur d’écriture en rouge
- Notre pourcentage calculé
- \r pour faire un retour chariot

Le fait de faire simplement un retour chariot sans le retour à la ligne, à chaque itération le pourcentage va être remplacé par le nouveau pourcentage.
Pour que toute notre ligne soit remplacée il faut faire un round sur notre pourcentage afin que le nombre de caractères utilisée soit toujours le même, sinon il peux afficher :
38 %4 %
Puis en sortie de boucle on affiche les 100% en vert et le message de fin de traitement.

Quelques exemples de couleurs
Couleur | Code pour le texte | Code pour l’arrière pan |
Noir | 30 | 40 |
Rouge | 31 | 41 |
Vert | 32 | 42 |
Jaune | 33 | 43 |
Bleu | 34 | 44 |
Magenta | 35 | 45 |
Cyan | 36 | 46 |
Blanc | 37 | 47 |
Et voilà maintenant vous pouvez vous amuser à faire de jolis script tout en couleur !