2013-12-10 5 views
8

मैं एक php डेवलपर की तरह कुछ भी नहीं हूं लेकिन मुझे इसका उपयोग करना होगा और मुझे वास्तव में पता नहीं है कि सत्र के दौरान PHP कैसे स्मृति आवंटन को संभालता है।मुझे PHP में डेटाबेस कनेक्शन कब बंद करना चाहिए?

मैं एक ऐसे अनुप्रयोग पर काम कर रहा हूं जो HTTP प्रमाणीकरण मांगता है, एक बार जब आप लॉग इन हो जाते हैं तो आप एक अच्छे इंटरफ़ेस के माध्यम से डेटा का उपयोग कर सकते हैं।
किसी ने मुझे एक और पोस्ट पर बताया, कि मुझे प्रत्येक निष्पादन के बाद MySQL डेटा कनेक्शन बंद नहीं करना चाहिए, लेकिन मुझे नहीं पता कि इस कनेक्शन का उपयोग करते समय यह कनेक्शन कैसे स्मृति है क्योंकि सर्वर पक्ष में मुझे नहीं पता कि PHP स्मृति में रहता है या नहीं।

तो मेरा सवाल है कि मैं डीबी से कनेक्ट करने के लिए एक सिंगलटन का उपयोग करूँगा और इसे कभी बंद नहीं करूँगा (क्योंकि मुझे कभी पता नहीं चलेगा कि एप्लिकेशन कब उपयोग में नहीं है। या मुझे आज जो करना है उसके साथ खड़ा होना चाहिए: कनेक्शन खोलना - > बयान पर अमल -> घनिष्ठ संबंध

पुनश्च:। मैं उपयोग कर रहा हूँ mysqli

संपादित करें 1:
मेरा आवेदन है MVC पैटर्न अर्थ के साथ डिजाइन:

|''''''''''|  |'''''''''''''|  |''''''''''''''| 
| view.php | ==> | control.php | ==> | database.php | 
|----------|  |_____________|  |______________| 

यह पैटर्न दृश्य को केवल control.php के माध्यम से डेटा के साथ संवाद करने की अनुमति देता है, जो डेटाबेस.php से SELECT या EDIT डेटा से फ़ंक्शन को कॉल करता है। विवरण आप मुझे दे के साथ, मैं रखना चाहिए:

public function __destruct(){ 
    mysql_close($this->connection); 
} 

database.php अंदर है, लेकिन उस पृष्ठ लोड है जब चयन करें या डेटा को संशोधित करने की जरूरत है, तो यह केवल थोड़े समय के लिए मार डाला है, जिसका अर्थ है कि यह अभी भी बंद हो जाएगा अनुरोध के अंत में कनेक्शन।

जो आपके द्वारा प्रदान किए गए कोड की शांति कहां रखेगा, या PHP में प्रासंगिक मेरा पैटर्न कहां से अधिक सटीक प्रश्न देता है?

+0

जो आपके क्लास के डेटाबेस प्रबंधन को निष्पादित करने वाला विनाशक है, देखें: http://stackoverflow.com/questions/2129162/how-do-you- कुशलतापूर्वक- कनेक्ट-to-mysql -इन-पीएचपी-बिना-रीकनेक्टिंग-ऑन-हर-क्यू –

+0

ऐसा इसलिए है क्योंकि एक एमवीसी पैटर्न नियंत्रण नियंत्रण दृश्य और मॉडल (डेटाबेस) में है। आपकी योजना में नियंत्रण नियंत्रण नियंत्रण और मॉडल।यदि आप अपने एमवीसी को सही तरीके से कोड करते हैं तो समस्या स्वचालित रूप से –

+0

हल हो जाएगी और यहां समस्या है, मैं ऑब्जेक्ट के साथ कोड नहीं करता क्योंकि मुझे वास्तव में यह नहीं पता कि यह कैसे करना है और मेरे पास ऐप को बदलने का समय नहीं है और न ही सीखने का समय यह कैसे काम करता है। – Kiwy

उत्तर

7

प्रत्येक क्वेरी के लिए कभी भी नया कनेक्शन न बनाएं; आपको इसे मैन्युअल रूप से बंद करना भी नहीं है। How do you efficiently connect to mysql in php without reconnecting on every query

आप इस का उपयोग कर सकते हैं::

बस आप पेज की शुरुआत में कनेक्शन

पर एक नजर है बनाने

public function __destruct() 
{ 
    mysql_close($this->connection); 
} 

जब पेज

बंद कर दिया है यह कहा जाता हो जाएगा
+0

लेकिन कनेक्शन बंद करने से मेमोरी लीक नहीं हो सकता है? – Kiwy

+0

जब पृष्ठ बंद हो जाता है तो आप कनेक्शन बंद कर सकते हैं, –

+1

पर मेरा संपादन देखें, मैं इस +1 – Loko

2

PHP के माइस्क्ली documentation से:

क्लाइंट प्रक्रिया और डेटाबेस के बीच एक कनेक्शन को क्लाइंट प्रक्रिया द्वारा पुन: उपयोग किया जा सकता है, बजाय कई बार बनाया और नष्ट किया जा सकता है। इससे ओवरहेड कम हो जाता है ...

संबंधित मुद्दे