declare
La construcción declare es usada para definir
directivas de ejecución para un bloque de código_ La sintaxis de
declare es similar a la de las otras estructuras
de control:
Directiva permite asignar el comportamiento del
bloque declare_ Actualmente una sola directiva
es reconocida: la directiva ticks (Consultar más
abajo la información sobre la directiva ticks)
La sentencia es lo que se ejecuta __ Como se
ejecuta y que efectos secundarios tiene depende de la directiva
definida en la directiva_
El constructor declare se puede usar tambien
globalmente, afectando a todo el código que le sigue_
Ticks
Un "tick" es un evento que ocurre por cada
N sentencias de bajo nivel ejecutadas
dentro del bloque declare_ El valor de
N es especificado por
ticks=N como
directiva dentro de declare_
El evento que ocurre en cada "tick" es especificado usando la
función register_tick_function()_ Ver el
ejemplo más abajo para más detalles_ Tener en cuenta que mas de un
evento puede ocurrir por cada "tick"
Ejemplo 11_1_ Perfilar una sección de código PHP <?php
// A function that records the time when it is called
function profile ($dump = FALSE)
{
static $profile;
// Return the times stored in profile, then erase it
if ($dump) {
$temp = $profile;
unset ($profile);
return ($temp);
}
$profile[] = microtime ();
}
// Set up a tick handler
register_tick_function("profile");
// Initialize the function before the declare block
profile ();
// Run a block of code, throw a tick every 2nd statement
declare (ticks=2) {
for ($x = 1; $x < 50; ++$x) {
echo similar_text (md5($x), md5($x*$x)), "<br />;";
}
}
// Display the data stored in the profiler
print_r (profile (TRUE));
?> |
|
Este ejemplo perfila el código PHP dentro del bloque 'declare',
grabando la hora, una sentencia si y otra no, cuando fue
ejecutada_ Esta información puede ser usada para encontrar areas
en donde el codigo es lento_ Este proceso se puede implementar de
diferentes maneras: usando "ticks" es más conveniente y facil de
implementar_
"Ticks" es una manera muy buena de eliminar errores, implementando
simples trabajos en paralelo, I/O en modo desatendido y otras
tareas_
Ver también register_tick_function() y
unregister_tick_function()_