मैं बैच स्क्रिप्ट लिख रहा हूं और Allowed memory size of 134217728 bytes exhausted
त्रुटि प्राप्त कर रहा हूं।क्यों "अनुमत स्मृति आकार समाप्त हो गया"?
मुझे समझ में नहीं आता कि स्मृति क्यों भर रही है। मैंने $row
वैरिएबल को अनसेट करने का प्रयास किया, लेकिन इससे कोई चीज़ नहीं बदली। यहाँ मेरी कोड है:
// ... (sql connection)
$result = mysql_query("SELECT * FROM large_table");
while ($row = mysql_fetch_array($result)) {
echo $row['id'] . PHP_EOL;
unset($row);
}
(सरलीकृत कोड)
क्यों स्मृति को भरने करता है, और मैं इसे कैसे बच सकते हैं?
नोट: यह एक बैच स्क्रिप्ट है। यह सामान्य है कि मुझे इस तरह के डेटा को संभालना होगा (1 मिलियन लाइनों के माध्यम से जाना)।
अद्यतन: 400 000 वें लाइन के आसपास स्मृति से बाहर होता है, तो यह लूप में कुछ होना चाहिए? यदि संभव हो तो मैं पेजिंग को लागू करने से बचना चाहता हूं।
यह नहीं दिखता है जैसे आप उस कोड स्निपेट से स्मृति से बाहर चलाने चाहिए। क्या कोई अन्य चर है जो प्रत्येक पुनरावृत्ति को बढ़ा रहा है? –
mysql क्वेरी वास्तव में पूरी तालिका को वापस नहीं करेगा -> जिसका अर्थ है कि परिणाम उपयोग की गई स्मृति में गिना जाएगा? – KillerX
एक मूर्ख सुझाव हो सकता है, लेकिन यह केवल एक चीज है जिसके बारे में मैं सोच सकता हूं: शायद आप अपने आउटपुट बफर को फ्लश करने का प्रयास कर सकते हैं? – Martijn