Stacktraces in PHP bei CLI Programmen mit Output redirect

wegus

Aktives Mitglied
Thread Starter
Mitglied seit
13.09.2004
Beiträge
17.201
Ich schreibe gerade einige Services die auf Servern im Hintergrund laufen sollen in PHP. Dazu habe ich all das getan was man so macht wenn man einen Dämon unter LINUX schreint ( geforkt, STDOUT/ERR/IN umgeleitet,...) und der Prozeß läuft auch prima. Logfiles schreiben brav was so passiert. Alles schön.

Nun bin ich gezwungen hier und da auf Legacy Code zuzugreifen und es zeigt sich, dass dabei in dem alten Code hier und da Stacktraces geworfen werden. Das aber ist mir nach längerer Suche erst aufgefallen als ich die Services wieder habe im Vordergrund laufen lassen. Da waren sie nämlich plötzlich da.

Wenn ich den I/O in Files umleite und einen normalen print "abc" verwende, erscheint das "abc" in den Logfiles. Stacktraces werden aber gehässigerweise nicht mit umgeleitet. Jetzt wo ich das weiß, kann ich damit umgehen.

Eigentlich aber möchte ich auch die noch im File stehen haben, bevor das alles hart geschlossen wird. Weiß jemand einen Weg dafür? Per Goggle habe ich dazu nichts gefunden. Jemand Erfahrungen damit?
 

wegus

Aktives Mitglied
Thread Starter
Mitglied seit
13.09.2004
Beiträge
17.201
Von PHP im CLI Mode? Was genau meinst Du/willst Du wissen?
 

wegus

Aktives Mitglied
Thread Starter
Mitglied seit
13.09.2004
Beiträge
17.201
ja klar das habe ich auch! Print Ausgaben z.B. werden durchgeleitet. Das paßt schon alles. Was verloren geht, sind gerade die Stacktraces. Ich hab schon überlegt, der Service hat ja STDOUT/IN/ERR, sind die vielleicht schon zu wenn es einen Stacktrace gibt und PHP übermittelt das über seinen ganz eigenen Stream ( also den des Interpreters und nicht den des Skriptes) ? Dann kann ich die gar nicht abfangen...
 

Olivetti

Aktives Mitglied
Mitglied seit
09.12.2005
Beiträge
11.697
debug_backtrace kommt jedenfalls via STDOUT.
bau doch mal den output buffer, mit ob_start / ob_get_contents, um's komplette script und schau ob der trace dann da drin ist.
 

wegus

Aktives Mitglied
Thread Starter
Mitglied seit
13.09.2004
Beiträge
17.201
Ja hab ich auch schon überlegt. Ist bisserl komplex. Sind einige Services mit Reactphp Eventloops und die Timer starten teils noch Background tasks.

Muss jetzt erstmal zur Deadline fertig sein. Danach sind dann solche Dinge drann.

Ich dachte nur vielleicht weiss einer nen Link oder eine Info, dass das normal ist oder ein bug oder mein Fehler oder...
 
Oben