Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP के साथ एकाधिक पेज लोड में सर्वर-साइड कैश किए गए कथन तैयार किए गए हैं?

जब एक अनुरोध किया जाता है तो PHP उदाहरण को "साफ" करता है और संसाधनों और अन्य चर को मुक्त करता है। यह कई चरणों में किया जाता है। चूंकि फास्टसीजीआई अनुरोध के बाद प्रक्रिया को जीवित रखता है, सभी चरणों को निष्पादित नहीं किया जाता है और सभी मेमोरी मुक्त नहीं होती है। वहाँ है उदा। EG(persistent_list) जिसका उपयोग mysql_pconnect() द्वारा किया जाता है , pg_pconnect() , ... इस सूची को अनुरोधों के बीच तब तक खाली नहीं किया जाता है जब तक कि प्रक्रिया जीवित रहती है (वास्तविक कार्यान्वयन के आधार पर हो सकता है, लेकिन यह ईजी (persistent_list) के उद्देश्य को धता बता देगा)। यदि आप लगातार कनेक्शन का उपयोग करते हैं तो आपकी स्क्रिप्ट को पिछले अनुरोध के दौरान स्थापित "पुन:उपयोग" कनेक्शन मिल सकता है।
एक तैयार कथन का सीधे उपयोग करने के लिए आपको उस कथन (और उस कनेक्शन) के लिए पहचानकर्ता की आवश्यकता होती है। (php-)postgresql का उपयोग करते समय यह केवल एक (कनेक्शन-वार) अद्वितीय स्ट्रिंग है जिसे आप पास करते हैं pg_execute() , इसलिए आपकी स्क्रिप्ट को किसी अन्य उदाहरण (उसी कनेक्शन का उपयोग करके) द्वारा पहले तैयार किए गए कथन तक पहुंच प्राप्त करने में कोई समस्या नहीं है।
mysqli या PDO-mysql आपको कथन पहचानकर्ता के रूप में संसाधन/वस्तु की आवश्यकता है। यह एक तरह की समस्या है क्योंकि न तो mysqli और न ही पीडीओ एक्सटेंशन अनुरोधों के बीच ईजी (persist_list) में संसाधन को संग्रहीत करने का एक तरीका प्रदान करता है और आप इसे फिर से नहीं बना सकते हैं। जब तक php-fpm ऐसी "सेवा" प्रदान नहीं करता है, तब तक सीधे mysql तैयार कथन का पुन:उपयोग करना असंभव लगता है।
आप केवल MySQL के सर्वर-साइड क्वेरी कैशे . हाल के संस्करणों में (लिंक देखें) तैयार बयानों का उपयोग करते समय यह कथन को पहचान सकता है। लेकिन फिर भी यह वास्तविक तैयार कथन का पुन:उपयोग नहीं करता है:

इसलिए, अगर मैं गलत नहीं हूं, तो वर्तमान में आप php में पिछले अनुरोध के दौरान तैयार किए गए mysql कथन का पुन:उपयोग नहीं कर सकते।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL> तालिका मौजूद नहीं है। लेकिन यह करता है (या इसे चाहिए)

  2. mysql-अजगर स्थापना समस्याएं (मैक ओएस एक्स शेर पर)

  3. असीमित लंबाई के लिए वर्चर कैसे सेट करें?

  4. यदि तालिका में बहुत अधिक कॉलम हैं तो क्या प्रदर्शन में कमी आई है?

  5. MySQL:प्रतिदिन अलग-अलग पंक्तियों की गणना करें