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-3. 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