Vumetro en PHP
A veces al dejar un “top” o un “watch w” en una consola, perdemos la noción de los colores =(, una buena forma de recuperarlos es crear un pequeño script en php que imite un vumetro que este constantemente analizando una fuente aleatoría de datos, pero con colores ASCII xD.
Si alguien lo quiere intentar, dejo el código. Aunque no es nada útil xD.
<?php include_once("console.php"); $c = new console(); $c->setAppName("Vumeter"); $c->setTitle("Vumeter"); function colorshell($c,$t,$f = 40) { // Color // 30 - 37 // Fondo 40-47 return sprintf("%c[%d;%d;%dm".$t,27,1, $c ,$f); } function printVumeter( $out ) { $c = new console(); $c->clear(); $c->toPos(0,0); // 6 lines , 1 to 10 foreach( $out as $line => $value ) { for($i=0;$i<=$value;$i++) { if ( $line < 4 ) { echo colorshell(32," ",42); } elseif( $line < 7 ) { echo colorshell(32," ",43); } elseif( $line < 11 ) { echo colorshell(33," ",41); } } echo colorshell(37,"\n",40); } } echo colorshell(37,"\n",40); while(true ) { $out = array( 0 => rand(1,10), 1 => rand(1,10), 2 => rand(1,10), 3 => rand(1,10), 4 => rand(1,10), 5 => rand(1,10), 6 => rand(1,10), 7 => rand(1,10), 8 => rand(1,10), 9 => rand(1,10), 10 => rand(1,10), ); printVumeter($out); usleep(5000); }
Además hay que utilizar la clase console (console.php) de Alex B. Snet (Package en phpclasses.org).
<?php class console { const TARGET_OUTPUT = "php://output"; const TARGET_STDOUT = "php://stdout"; const TARGET_STDERR = "php://stderr"; const TARGET_STDIN = "php://stdin"; protected static $color = array( 'gray' => 30, 'black' => 30, 'red' => 31, 'green' => 32, 'yellow' => 33, 'blue' => 34, 'magenta' => 35, 'cyan' => 36, 'white' => 37, 'default' => 39 ); protected static $bgcolor = array( 'gray' => 40, 'black' => 40, 'red' => 41, 'green' => 42, 'yellow' => 43, 'blue' => 44, 'magenta' => 45, 'cyan' => 46, 'white' => 47, 'default' => 49, ); protected static $style = array( 'default' => '0', 'bold' => 1, 'faint' => 2, 'normal' => 22, 'italic' => 3, 'notitalic' => 23, 'underlined' => 4, 'doubleunderlined' => 21, 'notunderlined' => 24, 'blink' => 5, 'blinkfast' => 6, 'noblink' => 25, 'negative' => 7, 'positive' => 27, ); private $text = ""; // Outputing public function draw($text='') { echo $this->text.$text; $this->text = ''; return $this; } // Input public function readNumeric() { $stdin = fopen('php://stdin', 'r'); $line = trim(fgets($stdin)); fscanf($stdin, "%d\n", $number); return $number; } public function readString() { $stdin = fopen('php://stdin', 'r'); $line = trim(fgets($stdin)); fscanf($stdin, "%s\n", $string); return $string; } // Sound public function beep() { echo "\007"; return $this; } public function setSoundHerz($herz=100) { echo "\033[10;{$herz}]"; return $this; } public function setSoundLong($milliseconds=500) { echo "'033[11;{$milliseconds}]"; return $this; } // Cursor position public function toPos( $row = 1, $column = 1 ) { echo "\033[{$row};{$column}H"; return $this; } public function cursorUp($lines=1) { echo "\033[{$lines}A"; return $this; } public function cursorDown($lines=1) { echo "\033[{$lines}B"; return $this; } public function cursorRight($columns=1) { echo "\033[{$columns}C"; return $this; } public function cursorLeft($columns=1) { echo "\033[{$columns}D"; return $this; } // Text colors public function setStyle($style='default') { $this->text .= "\033[".$this->style[$style]."m"; return $this; } public function setColor($color='default') { $this->text .= "\033[".$this->color[$color]; return $this; } public function setBgColor($color='default') { $this->text .= "\033[".$this->bgcolor[$color]; return $this; } // Application public function setAppName($name='') { echo "\033]0;{$name}\007"; return $this; } public function setTitle($name='') { echo "\033]2;{$name}\007"; return $this; } public function setIcon($name='') { echo "\033]1;{$name}\007"; return $this; } // Other public function clear() { echo "\033c"; return $this; } public function console($num=1) { echo "\033[12;{$num}]"; return $this; } }