2012-05-14 11 views
5

Ich baue eine Website mit PHP, die Benutzern erlaubt, eine Menge Daten zu verschiedenen Tabellen in einer MYSQL-Datenbank hinzuzufügen. Dies erfordert eine Menge Einfügen, Aktualisieren und Löschen von Tabellen in meiner Datenbank, wobei manchmal mehrere Befehle in einem Skript ausgeführt werden.PHP MySQL Fehlerprotokollierung und -behandlung - Best Practice

Ich bin besorgt über potenzielle Fehler beim Live-Auftritt (Ich habe getestet, getestet und getestet, aber immer noch einen Backup-Plan).

Ich habe überall nach einer Lösung gesucht, kann aber keine finden, die meine Bedürfnisse befriedigen würde, also frage mich, ob jemand hier irgendwelche Praktiken hat, die er benutzt oder Ratschläge, die er mir geben kann.

Was ich passieren soll:

Wenn ein Fehler meine Datenbank auftritt Anschluss (zum Beispiel) ich eine Seite oder Alarm-Fenster mit einem „traurig, dass wir ein Problem gehabt haben“ angezeigt werden soll Nachricht mit einer Taste um den Fehler zu protokollieren. Wenn ein Benutzer auf die Schaltfläche klickt, kann ich einen mysql_error() in der Datenbank mit einer Beschreibung des fehlgeschlagenen Befehls/der Funktion und des Seitennamens zusammen mit dem Zeit-/Datumsstempel protokollieren, den ich verfolgen kann.

Ist das etwas, was jemand vorher getan hat oder eine Alternative anbieten kann? Oder gibt es eine eingebaute Funktion, die genau das tut, was ich verpasst habe?

Jeder Rat würde sehr geschätzt werden.

+0

Sie müssen versuchen, die mysql-Fehler zu fangen. Die generische PHP-Fehlerprotokollierung wird normalerweise von den meisten Web-Servern unterstützt. Es erzeugt einfach eine Protokolldatei aller PHP-Fehler, die ausgelöst werden. – user17753

Antwort

5

Wenn die Verbindung zur Datenbank fehlschlägt, können Sie den Fehler nicht in der Datenbank protokollieren. Abgesehen von dem schlechten Verbindungsszenario sollten Sie eine php mysql-Bibliothek verwenden, die Ausnahmen unterstützt (wie PDO) und try-catch-Blöcke verwenden, um Fehlerzustände abzufangen, die Sie protokollieren möchten.

Sie werden wahrscheinlich nur in das Apache-Fehlerprotokoll bei DB-Verbindungsfehler schreiben (kann in einem try-catch-Block erfolgen).