Rolf B: Wo ist der Flaschenhals in miener Seite

Beitrag lesen

Hallo Jörg,

was Du möchtest, ist profiling. Leider ist das in PHP nicht eingebaut.

Lösung 1: Profiling "von Hand".

Dafür verteilst Du an strategischen Stellen Funktionsaufrufe über den Code. Sowas wie profile_mark("Open DB") oder ein Pärchen wie

$time = profile_begin("Fetch User");
// do work
profile_end("Fetch User", $time);

Und diese Funktionen schreiben einen Timestamp und den Text in eine Logdatei. Die wertest Du nachher aus. profile_end würde noch die Zeitdifferenz zwischen aktueller Zeit und $time loggen.

Wenn Du kein Profiling machst, kommentierst Du die Funktionsinhalte aus. Oder Du verwendest zwei verschiedene Include-Dateien: die eine included Dummys, die andere den echten Kram.

Vorteil:

  • funktioniert mit Bordmitteln, keine Erweiterungen nötig

Nachteil:

  • Viel Arbeit beim Verteilen der Funktionsaufrufe
  • geringer Overhead beim Nicht-Profilen

Lösung 2: Einsatz eines echten Profilers

Den muss man nur erstmal auf den Server bekommen - wenn Du das nicht darfst, hat sich diese Variante erledigt.

https://stackoverflow.com/questions/21133/simplest-way-to-profile-a-php-script

Hier wird vorgeschlagen, man könnte das mit xdebug machen.

Sucht man im PHP Handbuch nach "profiling", findet man an dieser Stelle den Hinweis auf die PECL-Erweiterung XHProf (PECL, GitHub), die für PHP 7 und PHP 8 verfügbar ist.

Ich hab's noch nie benutzt, ich weiß nicht, wie gut man das auf gehosteten Webspace bekommt. Good Luck 😉

Vorteil:

  • Du brauchst maximal einen oder zwei Funktionsaufrufe im Code, um das Profiling ein- und auszuschalten
  • externe Profiler dürften keinen Overhead haben wenn sie nicht laufen

Nachteil:

  • man muss sie erstmal zum Laufen bringen

Rolf

--
sumpsi - posui - obstruxi