Progress in PHP 07. May 2008 um 18:24 Uhr / Programming
Ab und zu muss man Skripte bauen die eine längere Zeit laufen. Da ist es gut sehen zu können wie weit so ein Script ist. Ich habe hier mal eine kleine PHP-Funktion dafür gebastelt.
/**
* $i ist die Zahl bei welchem durchlauf man gerade ist
* $max ist die maxanzahl der Durchläufe
*/
function progress($i, $max=0) {
$message = "Done: %d";
(int)$percent = 100 / $max * $i;
(int)$old_percent = 100 / $max * ($i -1);
$old_strlen = strlen((string)$old_percent) + strlen($message) -1;
if($i>0) echo str_repeat(chr(8), $old_strlen);
printf($message, $percent);
print("%");
}
$max = 200;
for($i=0; $i<$max; ++$i) {
sleep(1);
progress($i, $max);
}
Das gibt auf der konsole einfach eine Prozentzahl aus wo sich das Script gerade befindet.
Übrigens falls bei jemandem das mit chr(8)
nicht funktionieren sollte, der kann mal bei PEAR nachgucken, da herunterscrollen bis zur Methode erase().
Kommentare
Die Kommentare sind für diesen Eintrag geschlossen.
Alex schrieb am 09.05.2008
hm, nu ja... $i in Prozent umrechnen... dafür ein Blog-Eintrag?
Jeena Paradies aus Varberg / Schweden schrieb am 10.05.2008
David aus Aachen, Deutschland schrieb am 20.05.2008
Struppi aus Mainz schrieb am 22.05.2008
hmm, für $max als Default Null angeben ist etwas unglücklich, da beim Defaultwert das Skript abbricht und unter DOS (und ich glaube auch unter Linux) reicht ein CR (code:13) anstatt x-mal BS
Das würd' dann mit Perl so aussehen:
Dann bleibt wirklich nur die Prozent Rechnung übrig, ich kann mich mit dem CR aber auch täuschen.