मुझे PHP डेटा ऑब्जेक्ट फ़ंक्शंस के साथ कुछ गंभीर समस्याएं आ रही हैं। मैं पूरे सेट को लाने से बचने के लिए एक buffered क्वेरी का उपयोग कर एक बड़े परिणाम सेट (~ 60k पंक्तियों, ~ 1gig) के माध्यम से लूप करने की कोशिश कर रहा हूं।PHP पीडीओ बुफर्ड क्वेरी समस्या
कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, स्क्रिप्ट सिर्फ पीडीओ :: क्वेरी() पर लटकती है - ऐसा लगता है कि क्वेरी unbuffered चल रही है (परिणाम सेट आकार में परिवर्तन क्यों समस्या को ठीक करेगा?)। यहाँ समस्या को पुन: करने के लिए अपने कोड है: अगर मैं कुछ उचित संख्या के साथ क्वेरी को सीमित
, यह ठीक काम करता है:
$rQuery = $Database->query('SELECT id FROM mytable LIMIT 10');
मैं पीडीओ :: MYSQL_ATTR_MAX_BUFFER_SIZE साथ खेल रहे हैं और पीडीओ का उपयोग कर की कोशिश की है :: तैयार() और पीडीओ :: execute() साथ ही (हालांकि उपरोक्त क्वेरी में कोई पैरामीटर नहीं हैं), दोनों का कोई फायदा नहीं हुआ। किसी भी सहायता की सराहना की जाएगी।
वाह ठीक है मैं एक बेवकूफ हूँ बजाय
fetchAll()
उपयोग करने के लिएfetch()
एक धारणा बना देता है । मुझे नहीं पता कि मुझे विपरीत प्रभाव क्या मिला। – Stewartतकनीकी रूप से, एक "buffered" क्वेरी का अर्थ है MySQL क्लाइंट लाइब्रेरी आपको वापस सौंपने से पहले टीसीपी स्ट्रीम से पूरे परिणाम को खींचती है। – staticsan
हम्म, मैंने सोचा कि मैनुअल ने buffered/unbuffered (mysql शैली) और fetch/fetchAll (पीडीओ शैली) के बीच अंतर को कवर किया है, लेकिन फिर से देख रहा है। यदि आप कुछ और पृष्ठभूमि जानकारी चाहते हैं, तो आपको निम्न उपयोगी मिल सकता है: http://netevil.org/blog/2008/06/slides-pdo –