2010-03-01 12 views
6

Wird es als schlechte Praxis angesehen, sterben zu lassen() in einer Produktionsumgebung zu leben? Gerade zufällig diesen Artikel http://www.phpfreaks.com/blog/or-die-must-die zu lesen, wo der Autor auf Leute trifft, die so etwas in einer Produktionsumgebung verwenden. Also sollte ich nicht so codieren:PHP: Muss sterben() sterben?

$connection = mysql_connect($db_host, $db_username, $db_password); 
if (!$connection){ 
    die ("Could not connect to the database."); 
} 

Wie codierst du?

+2

Es ist eine schlechte Übung, Endbenutzern Ihre Datenbankfehler zu zeigen - diese sollten einige wie protokolliert werden, und ein generischer Fehler wird Ihnen Benutzern angezeigt. –

+2

Übrigens der beste Topic-Titel aller Zeiten! –

+1

Bitte lesen Sie http://StackOverflow.com/Questions/2130105/should-you-always-end-mysql-queries-with-for-die/2130127#2130127 – LiraNuna

Antwort

3

Sie nicht sterben jedes Mal, wenn Sie einen Fehler machen, tun Sie. Warum sollte Ihre Bewerbung tun?

der richtige Weg ist, Fehler abzufangen und sie in einer kontextabhängigen Weise zu verarbeiten, zum Beispiel

try { 
    application goes here 

    $conn = mysql_connect(...) 
    if(!$conn) 
     throw .... 
    .... 
} catch(Exception $err) { 
    if(PRODUCTION) { 
     log error 
     say something nice 
    } 
    if(DEBUG) { 
     var_dump($err); 
    } 
} 
+1

Eine subjektive Frage. Warum ziehen Sie es vor, eine Exception zu erheben und abzufangen, anstatt die Bedingung 'if (! $ Conn)' zu behandeln? –

+1

Enrico, weil Ausnahmen besser geeignet sind, den Standardablauf des Programms zu unterbrechen und die Steuerung an den Fehlerbehandlungscode zu übergeben. Es ist auch ein robusterer Weg, um frühzeitig abzustürzen: Wenn Sie sich stattdessen auf if/else-Bedingungen verlassen, müssen Sie sich jedes Mal daran erinnern, die richtigen Funktionen aufzurufen, um die Ausführung zu beenden. –

3

die() ist eine sehr grobe Aussage ... Nützlich (ziemlich) in der Entwicklerstufe, ich fand es falsch in der Produktionsphase.

Sie sollten schwerwiegende Fehler analysieren, überwachen und protokollieren und angemessene Meldungen wie "Es ist unmöglich, eine Verbindung zum Server herzustellen, bitte versuchen Sie es in wenigen Minuten oder schreiben Sie an [email protected], um das Problem zu melden"!

1

Well in einem produktiven enivornment, sollten Sie nie irgendwelche Fehler/Informationen über das System nach außen aussetzen Welt.

Wichtig ist, alle Fehler zu protokollieren. Wenn Sie über eine Website sprechen, würde ich eine HTTP status 500 als Antwort senden.

Verwandte Themen