Bequeme Logs
27. Dezember 2007
Ich habe mich gerade mit den Prozesskontrollfunktionen von PHP auseinander gesetzt um vielleicht ein paar nützliche Funktionen für Yanix zu finden und bin auf ein Problem gestoßen: Ein Feature der Prozesskontrollfunktionen ist es, Prozesse im Hintergrund laufen zu lassen. Wie soll ich ein Skript debuggen, welches ich nicht sehen kann?
Nach ein bisschen Grübeln kam ich auf die Lösung: Bau dir ein Log-Terminal!
Schritt 1: Logging
Diese funktion schreibt in eine Datei (in meinem Fall log.txt im XAMPP-Ordner) die übergebene Nachricht mit der PID des Prozesses der die Nachricht schreibt. Die PID erhalte ich beim Aufruf von pcntl_fork().
1 2 3 4 5 6 7 8 9 | function L($msg) { global $pid; $logfile = '/opt/lampp/htdocs/log.txt'; $msg = '[' . date('H:i:s') . "][{$pid}] " . $msg . "\n"; $f = fopen($logfile, 'a'); fwrite($f, $msg); fclose($f); } |
Schritt 2: Ausgabe
Als nächstes die Ausgabe. Mit ein bisschen PHP, HTML, Javascript und Prototype entstand eine kleines Skript um diese Ausgaben bequem und hübsch in einem Browser ansehen zu können. Das Skript gibt es hier zum Download. Es unterstützt über AJAX entweder die Anzeige einer Datei welche über den Webserver erreichbar ist oder über PHP eine beliebige Datei des Dateisystems. Mehr dazu in den Kommentaren der Datei.