brightpower 0 Report post Posted May 9, 2005 Hallo mein Provider rüstet derzeit auf und da fällt hier und da mal die Datenbank kurzfristig aus. Kann man das irgendwie abfangen damit nicht die Hieroglyphische Mysql Fehler meldung kommt sondern einen eigene Seite mit dem Hinweis auf den Datenbankausfall. Thx Share this post Link to post
Blackman 0 Report post Posted May 10, 2005 Ja, kannst das Forum abschalten. Da kann man dann auch nen Grund angeben wieso's abgeschalten ist. Extra wegen einem kleinen Datenbankausfall jetzt rumprogrammieren lohnt sich wohl ned ... BLACK PS: Vielleicht sieht Stefan das anders, und weiß nen schnellen workaround ? :P Share this post Link to post
Modula 0 Report post Posted May 10, 2005 (edited) Ich habe jetzt leider grade nicht soviel Zeit um das Ausführlich zu testen aber an und für sich müsste das gehen: Datei ./sources/Drivers/mySQL.php suche: /*========================================================================*/ // Basic error handler /*========================================================================*/ function fatal_error($the_error) { global $INFO; Jetzt probier folgendes aus (weiß grade nicht, ob das Board bei einem Fehler zu diesem Zeitpunkt schon einen header gesendet hat...) Füge darunter den blauen Code ein: /*========================================================================*/ // Basic error handler /*========================================================================*/ function fatal_error($the_error) { global $INFO; // MySQL Fehlerausgabe überschreiben start header("location: http://www.deine-domain.de/mysqlfehler.htm"); exit; // MySQL Fehlerausgabe überschreiben ende http://www.deine-domain.de/mysqlfehler.htm musst du natürlich durch die URL zu einer Fehlerseite ersetzen. sollte das nicht funktionieren zwei Alternativen: 1. /*========================================================================*/ // Basic error handler /*========================================================================*/ function fatal_error($the_error) { global $INFO; // MySQL Fehlerausgabe überschreiben start echo "Hier einen einfachen Fehlertext nach deinen Wünschen eintragen. HTML kannst du hier benutzen."; exit; // MySQL Fehlerausgabe überschreiben ende oder wenn alle Stricke reißen: 2. Suche nach: $out = "<html><head><title>Invision Power Board Database Error</title> <style>P,BODY{ font-family:arial,sans-serif; font-size:11px; }</style></head><body> <br><br><blockquote><b>There appears to be an error with the {$INFO['board_name']} database.</b><br> You can try to refresh the page by clicking <a href=\"javascript:window.location=window.location;\">here</a>, if this does not fix the error, you can contact the board administrator by clicking <a href='mailto:{$INFO['email_in']}?subject=SQL+Error'>here</a> <br><br><b>Error Returned</b><br> <form name='mysql'><textarea rows=\"15\" cols=\"60\">".htmlspecialchars($the_error)."</textarea></form><br>We apologise for any inconvenience</blockquote></body></html>"; Überschreibe den Teil nach $out =" mit einem beliebigem Text deiner Wahl. Edited May 10, 2005 by Modula Share this post Link to post
Stefan 0 Report post Posted May 10, 2005 Es kommt in meinen Augen darauf an, ob das ein kurzer Ausfall ist, der zeitlich festgelegt ist oder es im laufenden Betrieb hin und wieder zu kleinen Aussetzern kommt. Des Weiteren kommt es auch bei der Abschaltung des Board zu einer SQL Fehlermeldung, wenn die Verbindung zur Datenbank nicht zustande kommt. Als Workaround würde ich folgendes vorschlagen. Zunächst, damit auch bei fehlgeschlagender Datenbankverbindung die Funktion für SQL Fehler aufgerufen wird, muß in der mySQL.php (sources/Drivers) aus if ( !mysql_select_db($this->obj['sql_database'], $this->connection_id) ) { echo ("ERROR: Cannot find database ".$this->obj['sql_database']); } folgendes gemacht werden if ( !mysql_select_db($this->obj['sql_database'], $this->connection_id) ) { //echo ("ERROR: Cannot find database ".$this->obj['sql_database']); $this->fatal_error(""); } Nun die gewünschte Ausgabe in der Funktion fatal_error() einbinden. Suche dazu folgende Stelle $out = "<html><head><title>Invision Power Board Database Error</title> <style>P,BODY{ font-family:arial,sans-serif; font-size:11px; }</style></head><body> <br><br><blockquote><b>There appears to be an error with the {$INFO['board_name']} database.</b><br> You can try to refresh the page by clicking <a href=\"javascript:window.location=window.location;\">here</a>, if this does not fix the error, you can contact the board administrator by clicking <a href='mailto:{$INFO['email_in']}?subject=SQL+Error'>here</a> <br><br><b>Error Returned</b><br> <form name='mysql'><textarea rows=\"15\" cols=\"60\">".htmlspecialchars($the_error)."</textarea></form><br>We apologise for any inconvenience</blockquote></body></html>"; Kommentiere sie aus und füge deine eigene HTML Seite ein. //$out = "<html><head><title>Invision Power Board Database Error</title> <style>P,BODY{ font-family:arial,sans-serif; font-size:11px; }</style></head><body> <br><br><blockquote><b>There appears to be an error with the {$INFO['board_name']} database.</b><br> You can try to refresh the page by clicking <a href=\"javascript:window.location=window.location;\">here</a>, if this does not fix the error, you can contact the board administrator by clicking <a href='mailto:{$INFO['email_in']}?subject=SQL+Error'>here</a> <br><br><b>Error Returned</b><br> <form name='mysql'><textarea rows=\"15\" cols=\"60\">".htmlspecialchars($the_error)."</textarea></form><br>We apologise for any inconvenience</blockquote></body></html>"; $out = "EIGENER HTML CODE"; Als Tipp, innerhalb deines HTML Code auf Anführungszeichen verzichten und nur einfache Hochkommas verwenden. Ansonsten bekommst du Probleme mit dem PHP Interpreter. Nachtrag: Wie Modula vorgschlagen gat, geht es natürlich auch. Jedoch muß du, wie beschrieben in der Funktion connect() die Änderung vornehmen, damit du überhaupt erstmal in die Fehlerfunktion kommt, wenn du keine Verbindung zur Datenbank hast. ;) Share this post Link to post
GreyCrow 0 Report post Posted May 10, 2005 (edited) *dreht sich zu Frog um und schaut ihn fragend an* Ist die connect() Funktion im Plus auch schon entsprechend bearbeitet? *zu Stefan zurückdreht* Danke für den wertvollen Hinweis, die connect() Funktion hatte mir auch schon Kopfschmerzen gemacht. Manchmal liegt des Bretsels Lösung wirklich direkt vor uns... Wäre eigentlich fast noch eine Idee für einen kleinen MiniMod (über AdminPanel eigener Text mittels Textbox festlegbar?) *nachdenklich schaut* Edited May 10, 2005 by GreyCrow Share this post Link to post
brightpower 0 Report post Posted May 11, 2005 Thx für die schnelle und kompotente Hilfe. Share this post Link to post