"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > CodeIgniter में बाहरी कार्यों के भीतर लेनदेन कैसे संभालें?

CodeIgniter में बाहरी कार्यों के भीतर लेनदेन कैसे संभालें?

2024-11-08 को प्रकाशित
ब्राउज़ करें:776

How to Handle Transactions Within External Functions in CodeIgniter?

CodeIgniter में बाहरी कार्यों के भीतर लेनदेन को संभालना

जैसा कि आपने देखा है, CodeIgniter में डिफ़ॉल्ट लेनदेन प्रबंधन तंत्र को बाहरी कार्यों के भीतर होने वाली त्रुटियों के मामले में मैन्युअल रोलबैक की आवश्यकता होती है। इस समस्या के समाधान के लिए, अधिक व्यापक दृष्टिकोण की अनुशंसा की जाती है।

1. एक मॉडल में ट्रांजेक्शन हैंडलिंग को एनकैप्सुलेट करना:

कोडइग्निटर के आर्किटेक्चर के अनुसार, डेटाबेस ऑपरेशंस को मॉडल क्लास के भीतर एनकैप्सुलेट किया जाना चाहिए। यह उचित डेटा प्रबंधन और मॉडल-व्यू-कंट्रोलर (एमवीसी) पृथक्करण सुनिश्चित करता है। बाहरी कार्यों को केवल उपयोगिताओं या सहायकों के रूप में काम करना चाहिए।

2. बाहरी कार्यों में त्रुटि ट्रैपिंग:

बाहरी कार्यों के भीतर, जैसे कि Insert_function और update_function2, त्रुटि प्रबंधन लागू करें और यदि कोई त्रुटि होती है तो FALSE लौटाएं। लेनदेन पूरा होने पर यह स्वचालित रोलबैक ट्रिगर करेगा।

उदाहरण:

public function insert_function($data)
{
    if (!$this->db->insert('transactions_exercices', $data)) {
        return FALSE;
    }

    return TRUE;
}

3. नियंत्रक में अपवाद प्रबंधन:

नियंत्रक में, जहां लेनदेन शुरू किया गया है, लेनदेन के दौरान उत्पन्न होने वाले किसी भी अपवाद को संभालें और आवश्यक क्रियाएं करें, जैसे त्रुटि संदेश प्रदर्शित करना या अपवाद लॉग करना।

उदाहरण:

try {
    $this->db->trans_start();

    // Call external functions
    $result1 = $this->utils->insert_function($data);
    $result2 = $this->utils->update_function2($test);

    if ($result1 === FALSE || $result2 === FALSE) {
        throw new Exception('An error occurred.');
    }

    $this->db->trans_complete();
} catch (Exception $e) {
    $this->db->trans_rollback();
    // Handle the exception...
}

नोट: सुनिश्चित करें कि स्वतंत्र लेनदेन समूहों को अनुमति देने के लिए आपके लेनदेन कॉन्फ़िगरेशन में सख्त मोड अक्षम है, जैसा कि दिए गए समाधान में बताया गया है।

वैकल्पिक समाधान:

वैकल्पिक रूप से, आप एक कस्टम लेनदेन वर्ग को परिभाषित कर सकते हैं जो त्रुटि ट्रैपिंग और स्वचालित रोलबैक को संभालता है। यह दृष्टिकोण सभी लेनदेन के लिए केंद्रीय त्रुटि प्रबंधन प्रदान कर सकता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3