पीडीओ का उपयोग कर डेटाबेस में कनेक्शन स्थापित करते समय, पीडीओ विशेषता पीडीओ :: ATTR_PERSISTENT हर बार इस्तेमाल किया जाना चाहिए? यह कहता है कि यह उस उपयोगकर्ता के लिए लगातार कनेक्शन बनाता है, और जब भी आप डेटाबेस कनेक्शन के लिए पूछते हैं, तो एक नया सेट फिर से स्थापित करने के बजाय उसी कनेक्शन को पकड़ लेंगे। यह डिफ़ॉल्ट क्यों नहीं है? इसका उपयोग करने का कोई कारण नहीं है?पीडीओ :: ATTR_PERSISTENT हर बार इस्तेमाल किया जाना चाहिए?
उत्तर
लगातार कनेक्शन के साथ समस्या यह है कि MySQL के लिए उपलब्ध कनेक्शनों की संख्या सीमित है। अगर कुछ गलत हो जाता है और वह कनेक्शन बंद नहीं होता है, तो सर्वर इसे लंबे समय तक खोलने जा रहा है। यदि सर्वर कनेक्शन से बाहर चला जाता है, तो इससे जुड़े प्रत्येक एप्लिकेशन को अनुपलब्ध होने तक अनुपलब्ध होने जा रहा है।
आप शायद समय-समय पर कुछ गलत होने की उम्मीद कर सकते हैं, और गलत परिस्थितियों में संसाधनों के उपयोग की समस्या महीनों में रिसाव हो सकती है, यदि आपको ध्यान नहीं दिया जाता है, तो आपको बहुत धीरे-धीरे प्रदर्शन और वृद्धि में गिरावट आती है समय के साथ सिस्टम उपयोग में (सभी लाभ के लिए नहीं)।
यहां एक अच्छा लेख है जो आपकी मदद कर सकता है। यह MySQL पर केंद्रित है, लेकिन अधिकांश विचारों को डीबीएमएस के स्पेक्ट्रम में सामान्यीकृत किया जा सकता है।
पहला लिंक टूटा हुआ है। भय का प्रदर्शन करने के लिए –
आप सही तरीके से लेन-देन को संभाल नहीं है, तो यह एक सौदे में एक 'नई' लगातार कनेक्शन पहले से ही है, जो अराजकता पैदा कर सकता है हो सकता है।
बस एक साधारण निम्न कोड की वजह से मामला:
<?php
$pdo = getCustomPersistantPDO();
$pdo->beginTransaction();
if(rand() % 2 === 0) {
//simulate a poorly handled error
exit();
}
$pdo->commit();
?>
अनुरोध 1:
(starts w/o a transaction open)
openTransaction
incorrectly handled error
(never closes transaction)
अनुरोध 2:
(start w/ a transaction open, because it was not closed in the previous connection.)
openTransaction -> fails due to already open
BTW उदाहरण के सही संस्करण है:
<?php
$pdo = getCustomPersistantPDO();
$pdo->beginTransaction();
if(rand() % 2 === 0) {
//simulate a correctly handled error
$pdo->rollBack();
exit();
}
$pdo->commit();
?>
+1 – Charles
- 1. को बढ़ावा देना चाहिए :: ptr_vector जगह std :: vector में हर समय इस्तेमाल किया जाना चाहिए?
- 2. क्या मेलटॉ HTML5 में इस्तेमाल किया जाना चाहिए?
- 3. ईएफ 4 में पीओसीओ का इस्तेमाल कब किया जाना चाहिए?
- 4. क्या रेंडरएक्शन फॉर्म के साथ इस्तेमाल किया जाना चाहिए?
- 5. GL_CLAMP_TO_EDGE NPOT बनावट में इस्तेमाल किया जाना चाहिए
- 6. सीएसएस - मार्जिन और पैडिंग के लिए इस्तेमाल किया जाना चाहिए
- 7. क्या एक ऑक्टेट हर फ्रेम का पुनर्निर्माण किया जाना चाहिए?
- 8. उपयोग करना चाहिए LayoutRounding और SnapsToDevicePixels हमेशा इस्तेमाल किया जाना चाहिए?
- 9. एक सी # अनुप्रयोग में, एक डीबी कनेक्शन एक बार बनाया जाना चाहिए, या हर बार SQL कथन निष्पादित किया जाना चाहिए?
- 10. कोड समीक्षाओं को कितनी बार किया जाना चाहिए?
- 11. डीबग.एएसएसर्ट और डीबग.फेल को उदारतापूर्वक इस्तेमाल किया जाना चाहिए, और उन्हें उत्पादन कोड में छोड़ा जाना चाहिए?
- 12. RedirectToRoute का उपयोग कैसे किया जाना चाहिए?
- 13. हर बार
- 14. स्ट्रेस का उपयोग कैसे किया जाना चाहिए?
- 15. टोकन को कैसे ताज़ा किया जाना चाहिए
- 16. Flask.g का उपयोग कब किया जाना चाहिए?
- 17. जहां स्काला में वर्गों का उपयोग नहीं किया जाना चाहिए?
- 18. हाइबरनेट एंटिटी मैनेजर, क्या इसे सिंगलटन के रूप में इस्तेमाल किया जाना चाहिए?
- 19. "आर्टर्ट" कक्षा में इतने सारे अनावश्यक तरीके क्यों हैं? प्रत्येक का इस्तेमाल कब किया जाना चाहिए?
- 20. क्या विंडोज़ में ओपनजीएल पर डायरेक्ट 3 डी का इस्तेमाल किया जाना चाहिए?
- 21. सी # में ताले और म्यूटेक्स को एक साथ इस्तेमाल किया जाना चाहिए
- 22. जावास्क्रिप्ट विधि CollectGarbage() क्या है? कब और क्यों इसका इस्तेमाल किया जाना चाहिए?
- 23. तर्क अपवाद यूनिट परीक्षण किया जाना चाहिए?
- 24. कोबोल को इंडेंट क्यों किया जाना चाहिए?
- 25. अपवाद संदेशों को वैश्विककृत किया जाना चाहिए
- 26. @Entity Pojos का परीक्षण किया जाना चाहिए?
- 27. ईन्नोएम को कब आवंटित किया जाना चाहिए?
- 28. क्या यह बग ठीक किया जाना चाहिए?
- 29. scala.util.parsing.ast.Binders का उपयोग कैसे किया जाना चाहिए?
- 30. std :: nothrow कब उपयोग किया जाना चाहिए?
क्या आप इसे अपडेट कर सकते हैं ताकि अन्य उत्तर स्वीकार किया जा सके? मैंने मेरा हटाना करने की कोशिश की है क्योंकि केंडल बहुत बेहतर है लेकिन ऐसा नहीं कर सकता क्योंकि मेरा स्वीकार किया जाता है। –