Stacktraces in PHP bei CLI Programmen mit Output redirect

wegus

MU Team
Thread Starter
Dabei seit
13.09.2004
Beiträge
19.670
Reaktionspunkte
7.513
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?
 
Von PHP im CLI Mode? Was genau meinst Du/willst Du wissen?
 
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...
 
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.
 
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...
 
Zurück
Oben Unten