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:

declare (directiva) sentencia

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.

<?php
// Estos son lo mismo:

// se puede usar este:
declare(ticks=1) {
    
// script completo aqui
}

// o este:
declare(ticks=1);
// script completo aqui
?>

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 16-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().

Hosting by: hurra.com
Generated: 2007-01-26 18:00:38