2009-09-09 6 views
9

में कैसे काम करता है क्या प्रत्येक क्वेरी निष्पादित होने के बाद कनेक्शन को बंद करना बेहतर है या कनेक्शन को इसके रूप में रखना है, तो php स्वचालित रूप से उस कनेक्शन को बंद कर देगा।डेटाबेस कनेक्शन php-mysql

कौन सा बेहतर है और क्यों?

उत्तर

7

कनेक्शन को केवल एक बार खोलें। कनेक्शन खोलना और बंद करना भी समय लगता है। और जैसा कि आपने पहले ही कहा है, PHP closes open connections at the end of the runtime automatically

तो जब भी आपको कनेक्शन की आवश्यकता हो तो mysql_connect पर कॉल करें और PHP को अंत में बंद कर दें। mysql_connect पहले से ही मौजूदा कनेक्शन के लिए जांच करता है ताकि आपको चिंता करने की आवश्यकता न हो कि mysql_connect पर एक ही पैरामीटर के साथ कॉल करने से हर बार एक नया कनेक्शन खुल जाएगा। आप persistent connections का भी उपयोग कर सकते हैं जिसका उपयोग केवल एक स्क्रिप्ट निष्पादन से अधिक के लिए किया जा सकता है।

0

एक सतत कनेक्शन या कनेक्शन के पूल का उपयोग करना बेहतर हो सकता है।

0

आपके द्वारा खोलने वाले कनेक्शन को बंद करने के लिए आमतौर पर अच्छा अभ्यास होता है, जैसे आप साथ जाते हैं।

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

1

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

0

स्क्रिप्ट प्रारंभ के दौरान, एक बार अपने डेटाबेस से कनेक्ट करें; कनेक्शन को अपनी स्क्रिप्ट के निष्पादन के दौरान खोलें और इसके माध्यम से और प्रश्न भेजें।

उपर्युक्त एक सामान्य उपयोग परिदृश्य है, जहां आपके पास एकाधिक SQL क्वेरी निष्पादित करने वाली छोटी-छोटी PHP स्क्रिप्ट (शायद वेबसर्वर पर) है। जब तक आपकी स्क्रिप्ट कुछ घंटों से अधिक समय तक चलती है, तो प्रश्नों के बीच कनेक्शन बंद करने की चिंता न करें।

हर बार जब आप SQL सर्वर से कनेक्ट होते हैं, तो PHP स्क्रिप्ट और सर्वर दोनों को एक (अपेक्षाकृत) जटिल बातचीत के माध्यम से जाने की आवश्यकता होती है: नेटवर्क पर कनेक्शन स्थापित करें, जांचें कि दोनों पक्ष MySQL बोलना चाहते हैं, जांचें कि स्क्रिप्ट को कनेक्ट करने की अनुमति है, और cetera। डीबी कनेक्शन को ऊपर रखें, यह बहुत तेज़ और अधिक कुशल है।

5

यह वास्तव में कोई फर्क नहीं पड़ता। यदि आपकी PHP स्क्रिप्ट स्क्रिप्ट के अंत में आपके लिए कनेक्शन बंद करने जा रही है तो यह वास्तव में स्वयं को करने में बहुत अधिक बिंदु नहीं है।

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

प्रत्येक क्वेरी के बाद कनेक्शन बंद करना, और दूसरी क्वेरी करने के लिए दूसरे को खोलना स्मृति याद आ रही है, और समय की एक बड़ी बर्बादी है। सब कुछ, वास्तव में परेशान मत करो!

2

यदि आपकी स्क्रिप्ट कनेक्शन को यादृच्छिक रूप से उपयोग करती है तो कनेक्शन खोलने दें। यदि नौकरियों का समूह है जो कुछ समय के अंतराल के साथ कनेक्शन का उपयोग कर रहे हैं तो आप प्रत्येक समूह नौकरियों के बाद कनेक्शन बंद कर सकते हैं।