2010-03-01 14 views
6

क्या इसे मरने के लिए खराब अभ्यास माना जाता है() एक उत्पादन वातावरण में रहते हैं? बस इस आलेख को http://www.phpfreaks.com/blog/or-die-must-die पढ़ने के लिए हुआ जहां लेखक उत्पादन वातावरण में ऐसी चीज का उपयोग करने वाले लोगों पर निर्भर करता है। तो मुझे इस तरह से कोड नहीं करना चाहिए:PHP: मर जाता है() मरना चाहिए?

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

आप कैसे कोड करते हैं?

+2

अंतिम उपयोगकर्ताओं को आपकी डेटाबेस त्रुटियों को दिखाने का बुरा अभ्यास है - उनको कुछ लॉग इन होना चाहिए, और उपयोगकर्ताओं को दिखाए गए एक सामान्य त्रुटि को लॉग किया जाना चाहिए। –

+2

वैसे, सबसे अच्छा विषय-शीर्षक कभी! –

+1

कृपया देखें http://stackoverflow.com/questions/2130105/should-you-always-end-mysql-queries-with-or-die/2130127#2130127 – LiraNuna

उत्तर

3

आप मरते हैं हर बार जब आप कोई गलती करते हैं, तो आप करते हैं। आपका आवेदन क्यों करना चाहिए?

सही तरीका एक उत्पादक enivornment में

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

एक व्यक्तिपरक प्रश्न। आप 'if (! $ Conn) 'स्थिति में हैंडलिंग के बजाय अपवाद को उठाना और पकड़ना क्यों पसंद करते हैं? –

+1

एनरिको, क्योंकि अपवाद प्रोग्राम के मानक प्रवाह को तोड़ने और त्रुटि प्रबंधन कोड पर नियंत्रण पारित करने के लिए बेहतर हैं। यह 'जल्दी दुर्घटनाग्रस्त' करने का एक और भी मजबूत तरीका है: यदि इसके बजाय आप हर जगह/अन्य स्थितियों पर भरोसा करते हैं, तो आपको निष्पादन को समाप्त करने के लिए सही कार्यों को कॉल करने के लिए हर बार याद रखना होगा। –

3

die() एक बहुत ही मोटा बयान है ... डेवलपर चरण में उपयोगी (काफी), मैंने इसे उत्पादन चरण में पाया।

आपको घातक त्रुटियों का विश्लेषण, निगरानी और लॉग इन करना चाहिए, और सर्वर से कनेक्ट करना असंभव संदेश प्रदर्शित करना चाहिए, कृपया कुछ मिनटों में प्रयास करें या समस्या को सूचित करने के लिए [email protected] पर लिखें "!

1

खैर उदाहरण के लिए त्रुटियों को बीच में रोकने और उन्हें एक संदर्भ पर निर्भर फैशन में कार्रवाई करने के लिए, है, तो आप बाहर करने के लिए प्रणाली के बारे में किसी भी त्रुटि/जानकारी का खुलासा कभी नहीं करना चाहिए विश्व।

महत्वपूर्ण है, सभी त्रुटियों को लॉग इन करने के लिए। यदि आप किसी वेबसाइट के बारे में बात कर रहे हैं, तो मैं प्रतिक्रिया के रूप में HTTP status 500 भेजूंगा।

संबंधित मुद्दे