मुझे खतरनाक त्रुटि-संदेश का सामना करना पड़ा, संभवतः श्रमसाध्य प्रयास के माध्यम से, PHP स्मृति से बाहर चला गया है:
#### बाइट्स की अनुमत स्मृति आकार फ़ाइल (#### बाइट्स को आवंटित करने की कोशिश की) 123 पर फ़ाइल में।
सीमा बढ़ाना
यदि आप जानते हैं कि आप क्या कर रहे हैं और सीमा बढ़ाना चाहते हैं तो memory_limit देखें :
ini_set('memory_limit', '16M');
ini_set('memory_limit', -1); // no limit
सावधान रहें! आप केवल लक्षण को हल कर सकते हैं न कि समस्या को!
रिसाव का निदान:
त्रुटि संदेश एक लूप के साथ एक पंक्ति को इंगित करता है जो मुझे लगता है कि लीक हो रहा है, या अनावश्यक-संचय, स्मृति। मैंने memory_get_usage()
प्रत्येक पुनरावृत्ति के अंत में स्टेटमेंट मुद्रित किया है और यह सीमा तक धीरे-धीरे बढ़ने पर संख्या देख सकता है:
foreach ($users as $user) {
$task = new Task;
$task->run($user);
unset($task); // Free the variable in an attempt to recover memory
print memory_get_usage(true); // increases over time
}
इस सवाल के प्रयोजनों के लिए मान लेते हैं सबसे खराब स्पेगेटी कोड कल्पनीय में वैश्विक गुंजाइश कहीं में छिपा है जाने $user
या Task
।
क्या उपकरण, PHP ट्रिक्स या डिबगिंग वूडू मुझे समस्या को खोजने और ठीक करने में मदद कर सकते हैं?