मेरे पास नीचे दिया गया कार्य है जिसे मैं लूप में अक्सर कॉल करता हूं।PHP कचरा संग्रह बेकार है या यह सिर्फ मुझे है?
मैं 5 मिनट तक इंतजार कर रहा था क्योंकि स्मृति 1 एमबी से 156 एमबी तक चढ़ गई थी। PHP के कचरा कलेक्टर को चालू नहीं करना चाहिए और इसे किसी बिंदु पर कम करना चाहिए ?!
क्या ऐसा इसलिए है क्योंकि मैंने 256 एमबी पर मेमोरी सीमा निर्धारित की है?
गूंज बिंदु 2,3,4 पर इसकी सुंदर निरंतर स्मृति उपयोग। यह बिंदु 4 पर मेरा आधा मेग नीचे चला जाता है लेकिन बिंदु 1 वह जगह है जहां मुख्य स्मृति वृद्धि होती है। शायद file_get_html
की वजह से स्मृति में एचटीएमएल फाइल लोड हो रही है।
हालांकि मैं चर $html
के स्पष्ट और अनसेट का ख्याल रखूंगा?
function get_stuff($link, $category){
$html = file_get_html(trim("$link"));
$article = $html->find('div[class=searchresultsWidget]', 0);
echo '1 - > '.convert(memory_get_usage(true)).'<br />';
foreach($article->find('h4 a') as $link){
$next_url = 'http://new.mysite.com'.$link->href;
$font_name = trim($link->plaintext);
$html = file_get_html(trim("$next_url"));
$article = $html->find('form[class=addtags]', 0);
$font_tags = '';
foreach($article->find('ul[class=everyone_tags] li a span') as $link){
$font_tags .= trim($link->innertext).',';
}
echo '2 - > '.convert(memory_get_usage(true)).'<br />';
$font_name = mysql_real_escape_string($font_name);
$category = mysql_real_escape_string($category);
$font_tags = mysql_real_escape_string($font_tags);
$sql = "INSERT INTO tag_data (font_name, category, tags) VALUES ('$font_name', '$category', '$font_tags')";
unset($font_tags);
unset($font_name);
unset($category);
$html->clear();
mysql_query($sql);
unset($sql);
echo '3 - > '.convert(memory_get_usage(true)).'<br />';
}
unset($next_url);
unset($link);
$html->clear();
unset($html);
unset($article);
echo '4 - > '.convert(memory_get_usage(true)).'<br />';
}
जैसा कि आप देख सकते हैं, मैंने परेशान होने का उपयोग करने का प्रयास किया। यद्यपि यह अच्छा नहीं है जैसा कि मैं समझता हूं, जैसे ही मैं इसे कॉल करता हूं, यह स्मृति को "अनसेट" नहीं करेगा।
इस बात की कोई मदद के लिए धन्यवाद कि मैं स्मृति के ऊपर की वृद्धि को कैसे कम कर सकता हूं।
मुझे अपने प्रश्न के लिए एक नकारात्मक प्रतिनिधि मिल गया है? स्टैक ओवरफ्लो से उपयोगी सूचनाओं की तरह कहें। अगर आप ऐसा करते हैं, तो केवल नकारात्मक प्रतिनिधि न करें, टिप्पणी के द्वारा इसका पालन करें। – Abs
मुझे यह वास्तव में एक अच्छा सवाल मिल रहा है। शायद यह शब्द 'चूसना' है जो इसे उत्तेजित करता है। Upvoted। – Mchl
PHP में http अनुरोध द्वारा उपयोग की जाने वाली सभी मेमोरी अनुरोध के अंत में टूट गई है। हालांकि अनुरोध पर संसाधित होने पर जीसी स्मृति का प्रबंधन करने के लिए प्रयोग किया जाता है। मेरा मानना है कि यह सरल रेफ गिनती है। – seand