डिंग डिंग डिंग!
MySQL से कनेक्ट करते समय, PHP बफ़र की गई क्वेरी का उपयोग करना पसंद करती है . यह सच है, भले ही आप कनेक्ट करने के लिए किस विधि का उपयोग कर रहे हों। बफ़र किए गए प्रश्नों का उपयोग करते समय, आपके द्वारा पूछे जाने पर प्राप्त किए जाने के बजाय संपूर्ण परिणामसेट तुरंत प्राप्त किया जाता है। यह आमतौर पर है प्रदर्शन के लिए अच्छा है, क्योंकि कम राउंड-ट्रिप हैं।
लेकिन PHP में सब कुछ की तरह, एक गोचा है। जैसा कि बफ़रिंग पेज पर बताया गया है:
आप PHP 5.3 का उपयोग कर रहे हैं, जिसका अर्थ है कि एक अच्छा मौका है कि आप mysqlnd का उपयोग कर रहे हैं।
आप यहां बफ़र किए गए प्रश्नों को बंद करना चाहेंगे। यह MySQL के हर PHP इंटरफ़ेस में अलग तरह से किया जाता है:
- पीडीओ के लिए, आपको
PDO::MYSQL_ATTR_USE_BUFFERED_QUERYसेट करना होगाfalse. के लिए विशेषता । - mysqli के लिए, आपको
MYSQLI_USE_RESULTपास करना होगाqueryके लिए स्थिर विधि। - mysql के लिए, आपको
mysql_unbuffered_query. पर कॉल करना होगा इसके बजायmysql_query।
पूरी जानकारी और उदाहरण पेज पर हैं।
बिग फैट अनबफर क्वेरी गोचा!
आपको जरूरी एक अन्य क्वेरी जारी करने से पहले स्टेटमेंट हैंडल को ठीक से बंद करें और परिणाम सेट को मुक्त करें:
- पीडीओ में, इसका अर्थ है
closeCursorको कॉल करना स्टेटमेंट हैंडल पर। - mysqli में, इसका मतलब है
free_resultपर कॉल करना स्टेटमेंट हैंडल पर याfreeआप किसके साथ काम कर रहे हैं, इसके आधार पर परिणाम हैंडल पर। - mysql में, इसका मतलब है
mysql_free_resultपर कॉल करना
ऐसा करने में विफलता के परिणामस्वरूप एक त्रुटि होगी।