डिंग डिंग डिंग!
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
पर कॉल करना
ऐसा करने में विफलता के परिणामस्वरूप एक त्रुटि होगी।