J'ai un script PHP qui fonctionne dans CLI et que je souhaite afficher le pourcentage en cours de progression, donc je me demandais s'il est possible de mettre à jour le stdout pour afficher le nouveau pour cent. P>
Lorsque j'utilise rewind () ou fsek (), il jette un message d'erreur. P>
3 Réponses :
sortie \ r code> puis rincez pour revenir à la première colonne de la ligne en cours. p>
Vous pouvez alargiment que vous pouvez essayer d'utiliser des ncurses pour votre sortie CommandLine qui a la fonction NCurses_Move (,) qui vous permettra de mettre la sortie où vous le souhaitez, arbitrairement.
L'écriture sur une console / borne est étonnamment complexe si vous souhaitez reculer dans le raster de sortie ou faire des choses comme Ajout de couleurs - et le comportement variera en fonction du type de console / borne que vous utilisez. Il y a longtemps, certaines personnes ont eu l'idée de construire une représentation abstraite d'un terminal et d'écrire à cela. P>
voir Cet article pour plus de détails sur la façon de faire cela dans PHP. P>
@CAZLAB: "CLI" n'est pas un type de terminal.
Voir ce code:
echo "Done: "; $string = ""; for($i = 0; $i < 100; ++$i) { echo str_repeat(chr(8), strlen($string)); $string = $i."%"; echo $string; sleep(1); }
Bravo, cette réponse était parfaite :)
Cela peut fonctionner avec certaines émulations terminales 7/8 bits, mais c'est une solution désordonnée
Une solution «désordonnée» qui fonctionne sur chaque plate-forme Windows et Mac, etc.) et ne vous oblige pas à créer des ncurses (un module PHP supplémentaire qui pourrait ne pas être disponible sur votre hôte) ou autre chose. Tout ce qui serait plus que ce serait un gaspillage de temps d'OPS dans au moins 95% des usecases.
Les réponses ci-dessous sont excellentes, mais j'aimerais lancer une autre approche: gardez-la simple. Il suffit de générer périodiquement une nouvelle ligne de données de progression. Ou imprimer un "." carboniser. Ce n'est pas aussi cool que la mise à jour de la même ligne encore et encore, mais c'est simple, fonctionnel, compatible et fonctionne tout aussi bien que la sortie de votre application va consoler ou être de la pipi dans un fichier.