Die Benutzung der Funktion „register_tick_functions()“ ermöglicht es, die Scriptlaufzeit oder Funktionsausführungen zu messen, das heisst die CPU Rechenzeit die für ein Script oder Teile eines Scripts verwendet wird messbar zu machen und darzustellen.
Dadurch können nicht nur Fehler und unnötige Programmierschleifen erkannt werden, sondern auch die Perfomance und Schnelligkeit der eingesetzten Scripte verbessert werden, wenn dadurch die insgesamte Scriptlaufzeit minimiert werden kann. Dadurch eignet sich register_tick_functions() zur Fehlersuche sowie auch zur Perfomancesteigerung vor allem dann wenn Funktionen oder Scripte von vielen Clients gleichzeitig aufgerufen werden.
Der Syntax:
register_tick_function('funktionsname');
Grundsätzlich können als Parameter Funktionsnamen, Objekte und Arrays übergeben werden die mit dieser Methode gemessen werden sollen.
Beispiel:
<?php
function laufzeit_messen() {
list($sec, $timestamp) = explode(" ",
microtime());
$debug = debug_backtrace();
echo ' --->Zeile:
'.$debug[0]['line'].'->'.$sec.' msec<br>';
}
register_tick_function('laufzeit_messen');
declare(ticks = 1) {
for ($index = 0; $index < 5; $index++) {
echo 'Test: '.$index;
}
}
?>
Ausgabe:
Test: 0 ---> Zeile: 10 -> 0.82346200 msec
---> Zeile: 11 -> 0.82348300 msec
Test: 1 ---> Zeile: 10 -> 0.82349000 msec
---> Zeile: 11 -> 0.82349600 msec
Test: 2 ---> Zeile: 10 -> 0.82350200 msec
---> Zeile: 11 -> 0.82351500 msec
Test: 3 ---> Zeile: 10 -> 0.82352200 msec
---> Zeile: 11 -> 0.82352700 msec
Test: 4 ---> Zeile: 10 -> 0.82353300 msec
---> Zeile: 11 -> 0.20571500 msec
---> Zeile: 11 -> 0.20572900 msec
---> Zeile: 12 -> 0.20574300 msec
Erklärung:
Die komplette Durchlaufzeit eines Scriptes oder einer Funktion nennt man Scriptlaufzeit. Sie hat einen wesentlichen Einfluss auf die Effektivität und die Leistung von Scripten und Webservern. Die Funktion register_tick_function() überwacht und misst die Scriptlaufzeit, das heisst den Zeitverbrauch für jede Zeile ausgeführten Code. Bei jeder Ausführung eines Befehls wird diese Funktion im angegebenen Bereich aufgerufen. Dabei werden die Ticks gezählt und anschliessend umgerechnet. Unter einem Tick kann man sich eine Bewegung des Parsers innerhalb des Scriptes vorstellen.
Jeder Aufruf, jede Umrechnung, Aufname oder Ausgabe einer Information kann als Tick bezeichnet werden. Davon ausgenommen sind Strukturelemente wie Entscheidungen und oder Schleifenkonstrukte. Vereinfacht ausgedrückt wird jeder Sprung von Zeile zu Zeile innerhalb einer Funktion zeitlich gemessen und anschliessend in Zeiteinheiten umgerechnet. Als Ausgabe dient eine Zuordnung aus Zeilennummer und den gemessenen Millisekunden. Diese wird als Debugging Information ausgegeben.
Mit unregister_tick_functions() kann dieser Prozess wieder für eine Funktion, Objekt oder Array abgeschaltet werden. Die Messung der Scriptlaufzeit ist vor allem dann sinnvoll wenn es zu Laufzeitproblemen oder Perfomanceengpässen kommt oder wenn grössere Webapplikationen von Anfang an auf grösstmögliche Schnelligkeit getrimmt werden sollen.