जब एक अनुरोध किया जाता है तो 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 कथन का पुन:उपयोग नहीं कर सकते।