Lembrando de ticks

PHP
Enviado por Eclesiastes em Seg, 01/05/2006 - 14:57.PHP

Olá pessoal! =)

Nesta manhã, viajando pelo manual do PHP, me deparo com o construtor declare. Algo que não vejo a tanto tempo, desde então, tive que exercitar, pois não me lembro de ter usado, nem de ter brincado com ticks.

Para maiores informações sobre declare/ticks, consulte o amigável manual: http://br2.php.net/declare

Como exercício resolvei fazer um tick que é acionado a cada instrução executada, obtendo assim, informações do que foi executado.
E no final de tudo, retornará um array com os números pares e ímpares, juntamente com o tempo de cada execução a partir de um tempo inicial.

  1. <pre>
  2. <?php
  3.  
  4.     function stats($exibir = FALSE) {
  5.         global $i, $nTInicial;
  6.         static $aNumeros;
  7.  
  8.         if ($exibir) {
  9.             ksort($aNumeros);
  10.             return $aNumeros;
  11.         }
  12.        
  13.         $aNumeros[(((bool)($i % 2)) ? 'IMPAR' : 'PAR')][] = $i;
  14.         $aNumeros['TIME'][$i] = array_sum(explode(' ', microtime())) - $nTInicial;
  15.     }
  16.  
  17.     register_tick_function('stats');
  18.    
  19.     $nInicial  = 0;
  20.     $nFinal    = 10;
  21.     $nTInicial = array_sum(explode(' ', microtime()));
  22.    
  23.     declare (ticks=1) {
  24.    
  25.         for ($i  = $nInicial;
  26.              $i <= $nFinal;
  27.              $i++, (($i > $nFinal) ? print_r(stats(TRUE)) : FALSE)
  28.              );
  29.  
  30.     }
  31.  
  32. ?>

Até a próxima! =)