PHP kézikönyv
Előző | 16. Fejezet. Vezérlési szerkezetek | Következő

# declare

A declare egy kódblokk számára adott futtatási direktívák beállítását teszi lehetővé. A declare szintaxisa hasonló a vezérlési szerkezetekéhez:

    declare (direktíva)
        utasítás

A direktíva rész a declare blokk működését szabályozza. Jelenleg csak egy direktíva használható, a ticks. (Lásd lejjebb a ticks részleteit)

A declare blokk utasítás része mindig egyszer fut le. Az, hogy miképp, és milyen mellékhatásokkal, a direktíva részben megadottaktól függ.

A declare konstukció globális hatáskörben is használható, ilyenkor hatással van minden utána következő kódra.

`<?php // ezek ekvivalensek: // használhatod ezt: declare(ticks=1) { // entire script here } // vagy használhatod ezt: declare(ticks=1); // entire script here ?>`

## Tick-ek

A tick egy olyan esemény, amely minden N db alacsony szintű utasítás végrehajtásakor bekövetkezik a declare blokkban. Az N értéket a ticks=N szintaxissal kell megadni a declare blokk direktíva részében.

Az egyes tick-ekre bekövetkező esemény(ek) a register_tick_function() függvénnyel állítható(ak) be. Lásd az alábbi példát. Akár több esemény is bekövetkezhet egy tick-re.

Példa 16-1. A PHP kód egy részének időmérése

`<?php
// Ez a függvény megjegyzi a hívása időpontjait
function idopontok($visszaadni = FALSE)
{
static $idopontok;
// Visszaadja a $profile tartalmát, és törli
if ($visszaadni) {
$idok = $idopontok;
unset($idopontok);
return($idok);
}
$idopontok[] = microtime();
}
// A tick kezelő beállítása
register_tick_function("idopontok");
// Beállítjuk az első időpontot a declare előtt
idopontok();
// A kódblokk futtatása, minden második utasítás egy tick
declare(ticks = 2) {
for ($x = 1; $x < 50; ++$x) {
echo similar_text(md5($x), md5($x*$x)), "<br />";
}
}
// Az időmérő függvény adatainak kiírása
print_r(idopontok(TRUE));
?>`

A fenti példa a declare blokkban lévő PHP kód sebességét méri, rögzítve minden második alacsonyszintű utasítás végrehajátásának időpontját. Ez az információ alkalmas lehet arra, hogy megtaláld a lassan futó részeket a kódodban. Ezt a hatást másképp is el lehet érni, de tick-eket használva sokkal kényelmesebb és könnyebben megvalósítható megoldást kapsz.

A tick-ek kiválóan alkalmasak hibakeresésre, egyszerű multitasking megvalósítására, háttérben futattott I/O-ra, és sok más feladatra.

Lásd még a register_tick_function() és az unregister_tick_function() függvényeket!

Előző | Tartalom | Következő
switch | Fel | return