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:
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 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 11-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.