Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 ICQ Generator
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
 
 
 

Scriptlaufzeit messen mit register_tick_functions

Sie befinden sich: Home > Php Tutorial > Scriptlaufzeit messen mit r...

Scriptlaufzeit messen mit register_tick_functions


Eintrag am:  01.09.2010
Hits / Besucher:  7457
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von    schubertmedia
 
Beschreibung

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 insgesamt Scriptlaufzeit minimiert werden kann. Dadurch eignet sich die Funktion: register_tick_functions() zur Fehlersuche sowie auch zur Perfomancesteigerung hauptsächlich 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:

In diesem PHP-Code wird eine Funktion namens laufzeit_messen() definiert, die dazu dient, die Laufzeit von Codeabschnitten zu messen und anzuzeigen.

Die Funktion verwendet die list()-Funktion, um aus dem Ergebnis von explode() in Verbindung mit microtime()-Funktion zwei Variablen – $sec und $timestamp – zu extrahieren. Dabei gibt $sec den Sekundenanteil und $timestamp den Bruchteil einer Sekunde in Mikrosekunden an.

Außerdem greift die Funktion auf das Debugging-Array von PHP zurück (durch Aufruf der Funktion debug_backtrace()), um Informationen über den aktuellen Zustand des Codes abzurufen. In diesem Fall wird lediglich der Wert für 'line' ausgelesen und zur Anzeige gebracht.

Weiterhin registriert der Code diese Funktion als „Tick-Funktion“, mithilfe von register_tick_function('laufzeit_messen'). Eine Tick-Funktion ist ein Mechanismus in PHP, bei dem eine bestimmte Aktion oder Routine nach jedem N-Tick (Ausführungsschritt) des Interpreters aufgerufen wird. Der Wert für N-Ticks kann durch das Schlüsselwort declare(ticks = X) festgelegt werden.

In diesem Beispiel wurde declare(ticks = 1) gewählt; dies bedeutet, dass unsere Tick-Funktion (laufzeit_messen())) nach jedem einzelnen Ausführungsschritt aufgerufen wird. Dadurch erhalten wir eine genaue Messung der Laufzeit für jeden Schritt im Code.

Im Hauptteil des Codes, innerhalb des declare-Blocks, findet sich eine for-Schleife, die fünfmal durchlaufen wird. Bei jedem Durchlauf gibt sie den aktuellen Wert von $index mittels der echo-Anweisung aus.

Da unsere Tick-Funktion nach jedem Ausführungsschritt aufgerufen wird, erhalten wir während der gesamten for-Schleife mehrere Aufrufe von laufzeit_messen(), welche die aktuelle Laufzeit in Millisekunden und Zeilennummer anzeigen.

Insgesamt ist dieser PHP-Code ein anschauliches Beispiel dafür, wie man mithilfe einer tick-basierten Funktion Laufzeiten einzelner Codeabschnitte messen und darstellen kann.

Ablaufdiagramm:

Ablaufdiagramm des Beispiel für register_tick_functions()

 

Erläuterung:

Dieses Diagramm zeigt die Flusssteuerung des gegebenen PHP-Codes in einem Graphen:

  1. Starte das PHP-Script.
  2. Erstelle die „laufzeit_messen“ Funktion, welche:
    1. Die aktuelle Zeit und Zeilennummer zurückgibt.
  3. Registriere „laufzeit_messen“ als tick function, um es bei jedem Prozessschritt auszuführen.
  4. Führe eine For-Schleife mit fünf Durchläufen aus, die jeweils Testnachrichten mit Index (Test: 0 - Test: 4) anzeigen.

Die Tick-Funktion überwacht jeden Schritt im Skript und misst dabei die Laufzeit der einzelnen Prozesse (in Verbindung mit der `declare(ticks = X)` Anweisung).

 

Tags:

 

Artikel hinzufügen bei: