Salve a tutti, sto impazzendo con questa classe che mi da problemi di memoria;
Codice PHP:
<?php
error_reporting(E_ALL || ~E_NOTICE);
ini_set('display_errors', '1');
function convert($size)
{
$unit=array('b','kb','mb','gb','tb','pb');
return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
}
echo "
Ram Memory Usage start : ".convert(memory_get_usage(true));
require_once('simple_html_dom.php');
$urls[]="http://www.google.it";
$urls[]="http://www.repubblica.it";
$urls[]="http://www.gazzetta.it";
foreach($urls as $url) {
$dom = file_get_html($url);
echo "
Ram Memory Usage dopo acquisizione : ".convert(memory_get_usage(true));
// do some stuff here
$dom->clear();
echo "
Ram Memory Usage dopo clear : ".convert(memory_get_usage(true));
}
echo "
Ram Memory Usage end : ".convert(memory_get_usage(true));
?>
questo è l'output che faccio uscire per controllare l'andamento:
codice:
Ram Memory Usage start : 512 kb
Ram Memory Usage dopo acquisizione : 1.5 mb
Ram Memory Usage dopo clear : 1.5 mb
Ram Memory Usage dopo acquisizione : 14.25 mb
Ram Memory Usage dopo clear : 13.75 mb
Ram Memory Usage dopo acquisizione : 23 mb
Ram Memory Usage dopo clear : 23 mb
Ram Memory Usage end : 23 mb
come potete osservare, non viene liberata la ram dopo il clear dell'oggetto!
ho provato a fare anche unset($dom) ma non cambia niente...
il problema si presenta con script di complessità diversa, dove ovviamente nel giro di nulla arrivo oltre il limite di memoria imposto dal server.
riuscite ad aiutarmi in qualche modo? grazie!