मैं PHP की mysqli लाइब्रेरी का उपयोग कर रहा हूं। डेटाबेस आवेषण और अद्यतन हमेशा एक प्रयास-पकड़ ब्लॉक में होते हैं। प्रत्येक क्वेरी की सफलता तुरंत जांच की जाती है (if $result === false
), और कोई भी विफलता अपवाद फेंकता है। पकड़ mysqli_rollback()
पर कॉल करता है और उपयोगकर्ता के लिए एक संदेश के साथ बाहर निकलता है।PHP और MySQL के साथ, क्या आपको रोलबैक विफलताओं की जांच करनी चाहिए?
मेरा सवाल है, क्या मुझे mysqli_rollback()
के वापसी मूल्य की जांच करना चाहिए? यदि ऐसा है, और रोलबैक विफल रहता है, तो कोड को कौन से कार्यों को लेना चाहिए?
मुझे यह समझने में कठिनाई होती है कि रोलबैक कैसे विफल हो सकता है (MySQL में कुछ अत्याचारी बग को छोड़कर)। और चूंकि PHP किसी भी तरह से बाहर निकलने जा रहा है, रोलबैक को कॉल करना लगभग अनिवार्य लगता है। मुझे निश्चित रूप से लगता है कि यह स्पष्टता के लिए कोड में होना चाहिए, लेकिन जब PHP बाहर निकलता है तो यह MySQL से कनेक्शन बंद कर देगा और असामान्य लेन-देन स्वचालित रूप से वापस आ जाएंगे।
यदि आप यथार्थवादी संभावना के साथ एक ठोस उदाहरण की तलाश में हैं- आपका PHP डेटाबेस पर चलने की तुलना में एक अलग मशीन पर निष्पादित हो सकता है (उदाहरण के लिए, अलग डेटाबेस सर्वर)। नेटवर्क आईओ में बहुत सारे काम हैं लेकिन अब अगले दूसरे काम नहीं करते हैं। बेशक यह एक ही मशीन पर दोनों के साथ भी हो सकता है, बस बहुत कम संभावना है। – goat
दिलचस्प! ऐसा लगता है कि प्रभाव उस परिदृश्य में समान हैं हालांकि: रोलबैक कॉल विफल होने पर भी, PHP का MySQL क्लाइंट सत्र समाप्त हो जाएगा और रोलबैक होगा। तो शायद बड़ी समस्याओं के संकेतक के रूप में त्रुटि लॉगिंग करने लायक है, लेकिन आपको अभी भी डेटा अखंडता के बारे में चिंता करने की ज़रूरत नहीं है। – giskard22