declare
Das Sprachkonstrukt declare wird dazu verwendet, um
Ausführungsdirektiven für einen Codeblock anzugeben.
Die Schreibweise von declare ist der anderer
Kontrollstrukturen ähnlich:
Die Directive gibt Ihnen die Möglichkeit, das
Verhalten des declare-Blocks zu bestimmen.
Zur Zeit wird nur eine Direktive erkannt: die ticks
(Weiter unten finden Sie mehr Informationen zu den
ticks).
Der Anweisungsteil des declare-Blocks
wird ausgeführt - wie genau diese Ausführung passiert und welche
Nebeneffekte während der Ausführung auftreten, hängt von der Direktive ab,
die Sie im directive-Block angegeben haben.
Ticks
Ein tick ist ein Ereigniss, das bei jedem N-ten
Autreten der low-level Anweisungen innerhalb des
declare Blocks, die vom Parser ausgeführt werden,
auftritt. Der Wert von N wird durch die
Angabe von ticks=N
innerhalb des declare-Blocks in dem
directive Abschnitt bestimmt.
Das Ereignis/die Ereignisse, die bei jedem tick eintreten, legen Sie mit
der Funktion register_tick_function() fest.
Weitere Einzelheiten können Sie dem Beispiel unten entnehmen. Beachten
Sie, dass mehr als ein Ereigniss für jeden tick eintreten kann.
Beispiel 11-1. Profil eines Bereichs von PHP Code
<?php // Funktion, die bei Aufruf die Zeit aufzeichnet function profile ($dump = FALSE) { static $profile;
// Rückgabe der gespeicherten Zeit aus profile, danach löschen if ($dump) { $temp = $profile; unset ($profile); return ($temp); }
$profile[] = microtime (); }
// Einen tick handler bestimmen register_tick_function("profile");
// Funktion vor dem declare-Block initialisieren profile ();
// Ausführen eines Code-Blocks, jede 2te Anweisung löst einen tick aus
declare (ticks=2) { for ($x = 1; $x < 50; ++$x) { echo similar_text (md5($x), md5($x*$x)), "<br />;"; } }
// Ausgabe der gespeicherten Daten aus dem Profiler print_r (profile (TRUE)); ?>
|
|
Dieses Beispiel 'profiliert' den PHP Code der im 'declare'-Block steht,
indem die Zeit festgehalten wird, zu der jede zweite low-level Anweisung
im Codeblock ausgeführt wird. Diese Information können Sie dazu benutzen,
langsame Bereiche innerhalb bestimmter Codesegmente zu idebtifizieren.
Das gleiche Ziel können Sie auch mit anderen Methoden erreichen: die
Benutzung von ticks ist bequemer und einfacher zu implementieren.
Ticks sind gut für Debugging, einfaches Multitasking,
Hintergrund I/O und viele andere Aufgaben geeignet.
Siehe auch register_tick_function() und
unregister_tick_function().