Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/10/2011, 10:40
Avatar de Webstudio
Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años, 1 mes
Puntos: 69
Respuesta: clase cronometro, algo parecido a un timer

Cómo estás?
mirá, te muestro un ejemplo de una clase que uso yo, para este tipo de mediciones. Le puse "Timer" y lo cierto es que me resulta bastante útil de vez en cuando.

Código PHP:
<?php
/**
 * Class that handles the timer marks
 * Useful for time comparisons and memory usage statistics
 *
 * @author Pablo Rigazzi <[email protected]>
 */
class Timer
{
    
/**
     * Set of marks.
     *
     * @var array $_marks
     * @private
     * @static
     */
    
static private $_marks = array();

    
/**
     * Adds a mark to the queue.
     *
     * @param string $name Name of the mark.
     *
     * @return void
     * @public
     * @static
     */
    
static public function mark($name) {
        
self::$_marks[] = array(
                
'name' => $name,
                
'mark' => microtime(true),
                
'muse' => memory_get_usage()
                );
    }

    
/**
     * Prints object information.
     *
     * @return string
     * @public
     * @static
     */
    
static public function toString() {
        
$result = array();
        for(
$i 1$i count(self::$_marks); $i++) {
            
$tdelta    self::$_marks[$i]['mark'] - self::$_marks[$i-1]['mark'];
            
$mdelta    self::$_marks[$i]['muse'] - self::$_marks[$i-1]['muse'];


            
$result[]  = sprintf('%s - %s: %.5f secs (Mem: %d Kb)',
                            
self::$_marks[$i-1]['name'],
                            
self::$_marks[$i]['name'],
                            
$tdelta,
                            
$mdelta 1024);
        }
        --
$i;
        return 
"<!--\nTimer Information:" PHP_EOL .
                
implode("\n"$result) . PHP_EOL .
                
"Total time  / memory tracked : " 
                
sprintf('%.5f secs (Mem: %d Kb)',
                        
self::$_marks[$i]['mark'] - self::$_marks[0]['mark'],
                        (
self::$_marks[$i]['muse'] - self::$_marks[0]['muse']) / 1024) . PHP_EOL .
                
"Peak Memory Usage : " memory_get_peak_usage(true) / 1024 " Kb" PHP_EOL .
       
"-->";
    }
}
El método de uso es mucho muy sencillo. A lo largo de tu código, simplemente vas haciendo "marcas" con tu timer, como si estuvieras marcando una vuelta en una carrera o dejando "tags" en el ciclo de ejecución de tu sitio:
Código PHP:
Timer::mark('inicio');
Hago_algo();
Timer::mark('después de hacer algo');

// Sigue tu código y al finalizar, lo que hacés es : 
echo Timer::toString(); 
Y listo, el método toString() devuelve la información de todos los puntos que marcaste, la diferencia de tiempo entre los distintos puntos, y el consumo de memoria en cada uno de los puntos, más la información de la máxima memoria que utilizó tu script en su ejecución.

Espero que te resulte útil.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com