2010-08-13 14 views
10

संक्षेप में, वहाँ उच्च उपयोग के लिए mysqli_pconnect किसी प्रकार का PHP & MySQL सर्वर है, या मैं mysql असंशोधित साथ छड़ी की जरूरत है? और यदि हां, तो उन्होंने इसे क्यों हटा दिया?mysqli लगातार कनेक्शन

उत्तर

15

इसके लिए समर्थन PHP 5.3 में पेश किया गया था। इससे पहले के संस्करणों के लिए, पीडीओ और - भगवान forbid - mysql एक्सटेंशन ही एकमात्र विकल्प हैं।

के शब्दों में manual:

mysql विस्तार के विपरीत, mysqli लगातार कनेक्शन खोलने के लिए एक अलग समारोह प्रदान नहीं करता है। एक सतत कनेक्शन खोलने के लिए आपको पी को प्रीपेड करना होगा: कनेक्ट होने पर होस्टनाम पर।

+0

तो प्री 5.3 के लिए, हैक या वर्कअराउंड क्या है? – Pacerier

8

मैं MySQL में लगातार कनेक्शन से परेशान नहीं हूं। लगातार कनेक्शन ओरेकल जैसे डेटाबेस के लिए हैं, जिसमें एक नया कनेक्शन बनाना बहुत धीमा है।

MySQL में, कनेक्शन बनाना अपेक्षाकृत तेज़ है (विशेष रूप से यदि आप रिवर्स डीएनएस लुकअप को बंद करते हैं)। MySQL के साथ लगातार कनेक्शन की आवश्यकता नहीं होनी चाहिए। यदि आपका ऐप प्रदर्शन-महत्वपूर्ण है, तो लगातार कनेक्शन के बारे में चिंता करने की तुलना में आप अपनी हिरन के लिए अधिक धमाके के साथ कई चीजें कर सकते हैं।

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

+0

मैन्युअल पृष्ठ पढ़ें जिसे मैंने लिंक किया है। प्रत्येक PHP अनुरोध के बाद क्लीनअप ऑपरेशन हैं। लेकिन हां, लगातार कनेक्शन का उपयोग करने में ज्यादातर बार इसका लायक नहीं होगा। – Artefacto

+0

धन्यवाद, यह आश्वस्त है। –

4

वास्तव में mysqli लाइब्रेरी के लिए persistent support है। होस्टनाम में बस "पी:" प्रीपेन्ड करें और आप कर चुके हैं।

+0

होस्ट नाम पर आप "पी:" कैसे प्रीपेड करते हैं? उदाहरण: \t \t \t $ यह-> mysqli = new mysqli (mysql_host, mysql_user, mysql_password, mysql_database); –

+4

@JavaNewb: पुराने धागे को पुनर्जीवित करने के लिए खेद है, लेकिन हमने एक प्रश्न अनुत्तरित छोड़ दिया! स्ट्रिंग कॉन्सटेनेशन के साथ मैं "प्रीपेड पी:"। उदाहरण: $ this-> mysqli = new mysqli ('p:'। Mysql_host, mysql_user, mysql_password, mysql_database); –

+0

यह एक बिल्कुल अच्छा समाधान है। मेरे लिए बहुत अच्छा काम किया! – zmonteca

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