Hello,
Ich möchte nun auch in meinen prozeduralen Scripte-Sammlungen die Fehlerbehandlung verbessern.
Dazu möchte ich $php_errormg benutzten, das aber nur beschrieben wird, wenn track_errors eingeschaltet ist.
Die aber nur jeweiligen im Scope gültig ist ...
Ja und viel schlimmer: die kann noch nicht mal populated werden mit 'global'. Dann erscheint sie zwar im übergeordneten Scope, aber leider ohne Inhalt.
Einzige Abhilfe:
global $MYERRORMSG; ## damit die Fehlerauswertung nicht ins Leere greift
function open()
{
global $MYERRORMSG;
if (!$fp = @fopen('nofile.txt', 'rb')
{
$MYERRORMSG = $php_errormsg;
return false;
}
}
echo "MyErrorMsg: $MYERRORMSG \r\n";
Aber das funktionioniert wenigstens.
Wenn ich dann auch noch die Datenbank fertig habe, die die textuellen Fehlermeldungen wieder in eine hierarchische Ordnung eindeutiger Fehlernummern zurückübersetzt, habe ich schon 'was gewonnen.
Insbesondere interessiert es mich, ob es die Scriptausführung merklich verlangsamt.
Hm. ini_set() wirkt nur im Arbeitspeicher und wird genau genommen beim Kompilieren mit abgearbeitet, der Inhalt der Variable steht nur im Arbeitsspeicher und abertausende Iterationen sehe ich nicht. Definiere "merklich". Davon hängt die Antwort ab. Ist Dein "merklich" auf paranoide Weise definiert wäre die Antwort "Ja, sicherlich."
Nee, 100 Taktzyklen darf das schon gerne kosten. PHP ist ja nicht Assembler. Aber da könnte ich den Unsinn dann auch noch selber beseitigen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg