Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Zend DB कैसे डेटाबेस कनेक्शन प्रबंधित करता है

कनेक्शन बनाना

एडेप्टर वर्ग का एक उदाहरण बनाना RDBMS सर्वर से तुरंत कनेक्ट नहीं होता है . एडेप्टर कनेक्शन पैरामीटर सहेजता है, और मांग पर वास्तविक कनेक्शन बनाता है, पहली बार आपको एक क्वेरी निष्पादित करने की आवश्यकता है। यह सुनिश्चित करता है कि एडेप्टर ऑब्जेक्ट बनाना त्वरित और सस्ता है। आप एक एडेप्टर का एक उदाहरण बना सकते हैं, भले ही आप सुनिश्चित न हों कि आपके एप्लिकेशन द्वारा प्रस्तुत किए जा रहे वर्तमान अनुरोध के दौरान आपको किसी भी डेटाबेस क्वेरी को चलाने की आवश्यकता है।

यदि आपको एडेप्टर को RDBMS से कनेक्ट करने के लिए बाध्य करने की आवश्यकता है, तो getConnection () विधि का उपयोग करें। यह विधि कनेक्शन के लिए एक ऑब्जेक्ट देता है जैसा कि संबंधित PHP डेटाबेस एक्सटेंशन द्वारा दर्शाया गया है। उदाहरण के लिए, यदि आप पीडीओ ड्राइवरों के लिए किसी भी एडेप्टर वर्ग का उपयोग करते हैं, तो getConnection() विशिष्ट डेटाबेस के लिए लाइव कनेक्शन के रूप में आरंभ करने के बाद, पीडीओ ऑब्जेक्ट लौटाता है।

यह कनेक्शन को बाध्य करने के लिए उपयोगी हो सकता है यदि आप किसी भी अपवाद को पकड़ना चाहते हैं जो अमान्य खाता क्रेडेंशियल्स के परिणामस्वरूप फेंकता है, या आरडीबीएमएस सर्वर से कनेक्ट करने में अन्य विफलता। इन अपवादों को तब तक नहीं फेंका जाता है जब तक कि कनेक्शन नहीं हो जाता है, इसलिए यदि आप डेटाबेस के खिलाफ पहली क्वेरी के समय के बजाय अपवादों को एक ही स्थान पर संभालते हैं तो यह आपके एप्लिकेशन कोड को सरल बनाने में मदद कर सकता है।

इसके अतिरिक्त, एक एडेप्टर इसे स्टोर करने के लिए क्रमबद्ध किया जा सकता है, उदाहरण के लिए, एक सत्र चर में। यह न केवल एडॉप्टर के लिए, बल्कि अन्य ऑब्जेक्ट्स के लिए भी बहुत उपयोगी हो सकता है, जैसे Zend_Db_Select ऑब्जेक्ट। डिफ़ॉल्ट रूप से, एडेप्टर को क्रमबद्ध करने की अनुमति है, यदि आप इसे नहीं चाहते हैं, तो आपको Zend_Db::ALLOW_SERIALIZATION विकल्प को FALSE के साथ पास करने पर विचार करना चाहिए, ऊपर का उदाहरण देखें। आलसी कनेक्शन सिद्धांत का सम्मान करने के लिए, एडेप्टर अनियंत्रित होने के बाद खुद को फिर से कनेक्ट नहीं करेगा। फिर आपको getConnection() को स्वयं कॉल करना होगा। आप एडाप्टर विकल्प के रूप में Zend_Db::AUTO_RECONNECT_ON_UNSERIALIZE को TRUE के साथ पास करके अडैप्टर को स्वतः पुनः कनेक्ट कर सकते हैं।

कनेक्शन बंद करना

आम तौर पर डेटाबेस कनेक्शन को बंद करना आवश्यक नहीं है। PHP स्वचालित रूप से सभी संसाधनों और अनुरोध के अंत को साफ़ कर देता है। डेटाबेस एक्सटेंशन को कनेक्शन को बंद करने के लिए डिज़ाइन किया गया है क्योंकि संसाधन ऑब्जेक्ट का संदर्भ साफ़ हो गया है।

हालाँकि, यदि आपके पास एक लंबी अवधि की PHP स्क्रिप्ट है जो कई डेटाबेस कनेक्शन शुरू करती है, तो आपको अपने RDBMS सर्वर की क्षमता को समाप्त करने से बचने के लिए कनेक्शन बंद करने की आवश्यकता हो सकती है। अंतर्निहित डेटाबेस कनेक्शन को स्पष्ट रूप से बंद करने के लिए आप एडेप्टर की क्लोज़कनेक्शन () विधि का उपयोग कर सकते हैं।

1.7.2 रिलीज के बाद से, आप जांच सकते हैं कि आप वर्तमान में आरडीबीएमएस सर्वर से कनेक्टेड () विधि से जुड़े हैं। इसका मतलब है कि एक कनेक्शन संसाधन शुरू किया गया है और बंद नहीं किया गया है। यह फ़ंक्शन वर्तमान में परीक्षण करने में सक्षम नहीं है उदाहरण के लिए कनेक्शन का सर्वर साइड क्लोजिंग। यह आंतरिक रूप से कनेक्शन को बंद करने के लिए उपयोग किया जाता है। यह आपको बिना किसी त्रुटि के कई बार कनेक्शन बंद करने की अनुमति देता है। यह पहले से ही 1.7.2 से पहले पीडीओ एडेप्टर के लिए था, लेकिन दूसरों के लिए नहीं।

अधिक जानकारी




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आप सेलेक्ट WHERE IN () का उपयोग करके ऑर्डर कैसे रखते हैं?

  2. MySQL में इन्वेंटरी मैनेजमेंट सिस्टम के लिए डेटाबेस डिजाइन करने के लिए गाइड

  3. क्या मुझे अजगर MySQLdb मॉड्यूल में कर्सर का पुन:उपयोग करना चाहिए

  4. संस्करण 5.0.3 के अनुसार mysql तालिका के दशमलव क्षेत्र में ऋणात्मक संख्या संग्रहीत करना

  5. एसक्यूएल क्या है? एक डेटाबेस क्या है? रिलेशनल डेटाबेस मैनेजमेंट सिस्टम्स (RDBMS) को प्लेन इंग्लिश में समझाया गया।