मैं अर्ध-सरल डेटाबेस रैपर क्लास लिख रहा हूं और एक fetching विधि चाहता हूं जो स्वचालित रूप से संचालित करेगी: इसे प्रत्येक अलग-अलग कथन को केवल पहली बार तैयार करना चाहिए चारों ओर बस और लगातार कॉल पर क्वेरी को बाध्य और निष्पादित करें।PHP पीडीओ: प्रदर्शन को फिर से तैयार करने के तरीके को कैसे प्रभावित करता है
मुझे लगता है कि मुख्य प्रश्न यह है: एक ही MySQL कथन कार्य को फिर से तैयार करने के लिए, क्या पीडीओ जादुई रूप से बयान को पहचान लेगा (इसलिए मुझे नहीं करना है) और ऑपरेशन को रोकना है? अपनी अनूठी कुंजी के अंतर्गत -
तो नहीं, मैं प्रत्येक अलग क्वेरी के लिए एक अद्वितीय कुंजी उत्पन्न करके ऐसा करने को प्राप्त करने और डेटाबेस वस्तु में एक निजी सरणी में तैयार बयान रखने के लिए योजना बना रहा हूँ। मैं निम्नलिखित तरीकों में से एक में सरणी कुंजी प्राप्त करने की योजना बना रहा हूं (जिसमें से कोई भी मुझे पसंद नहीं है)। वरीयता के क्रम में: - अगर हमारे विधि एक पाश के भीतर कहा जाता है basename(__FILE__, ".php") . __LINE__
की तर्ज पर कुछ (इस विधि केवल काम करेगा -
- प्रोग्रामर जब विधि बुला एक अतिरिक्त, हमेशा एक ही पैरामीटर पारित किया है जो है मामले की अधिकांश कार्यक्षमता की आवश्यकता होती है)
- प्रोग्रामर एक अतिरिक्त पैरामीटर
- कुंजी उत्पन्न करने के लिए पास की गई क्वेरी का उपयोग करने के लिए पूरी तरह से यादृच्छिक स्ट्रिंग (सबसे पहले जेनरेट किया गया) पास करता है - हैश का प्राप्त करना क्वेरी या कुछ समान
- कैल द्वारा पहली बुलेट (उपरोक्त) के समान प्राप्त करें लिंग
debug_backtrace
क्या कोई भी इसी तरह का अनुभव है? यद्यपि मैं के लिए काम कर रहा हूं, अनुकूलन पर कुछ ध्यान देने योग्य है (यह सप्ताह के दौरान काफी बड़ा और बढ़ रहा है), शायद मैं कुछ भी नहीं कर रहा हूं और जो भी कर रहा हूं, उसमें कोई प्रदर्शन लाभ नहीं है?
मुझे लगता है कि एसक्यूएल के साथ कुंजी के साथ तैयार कथन हैंडल डालना, केवल एकमात्र रास्ता है। मुझे आपके द्वारा प्रस्तावित अन्य तरीकों में कोई लाभ नहीं दिख रहा है। हालांकि, मुझे आश्चर्य है कि क्या पीडीओ स्वचालित रूप से इस अनुकूलन को बनाता है ... – Inshallah
हालांकि यदि क्वेरी लंबी है और इसे हजारों बार कहा जाता है, तो सरणी में ऐसी कुंजी का लुकअप अपने आईएमओ पर एक बाधा बन जाएगा। – raveren
मुझे नहीं पता। मैं पूरी तरह से गलत हो सकता है। मैं PHP सरणी आंतरिक के बारे में पर्याप्त नहीं जानता, और इस स्तर पर प्रदर्शन का परीक्षण कभी नहीं किया। यह एक अच्छा विचार है, वैसे, एक को लागू करने से पहले, विभिन्न तरीकों के प्रदर्शन का परीक्षण करना। – Inshallah