Ben bellek sızıntı basit php komut dosyaları ile karıştırmasını oldum php programlar (drupal modülleri, vb) gelecek bellek sızıntılarını önlemek için çalışıyor umuduyla.
Bir php uzmanı bana bu senaryo hakkında ne bellek kullanımı sürekli tırmanmaya neden bulmanıza yardımcı olabilir?
Çeşitli parametreleri değişiyor, bunu kendiniz çalıştırmayı deneyin. Sonuçlar ilginç. İşte:
<?php
function memstat() {
print "current memory usage: ". memory_get_usage() . "\n";
}
function waste_lots_of_memory($iters) {
$i = 0;
$object = new StdClass;
for (;$i < $iters; $i++) {
$object->{"member_" . $i} = array("blah blah blha" => 12345);
$object->{"membersonly_" . $i} = new StdClass;
$object->{"onlymember"} = array("blah blah blha" => 12345);
}
unset($object);
}
function waste_a_little_less_memory($iters) {
$i = 0;
$object = new StdClass;
for (;$i < $iters; $i++) {
$object->{"member_" . $i} = array("blah blah blha" => 12345);
$object->{"membersonly_" . $i} = new StdClass;
$object->{"onlymember"} = array("blah blah blha" => 12345);
unset($object->{"membersonly_". $i});
unset($object->{"member_" . $i});
unset($object->{"onlymember"});
}
unset($object);
}
memstat();
waste_a_little_less_memory(1000000);
memstat();
waste_lots_of_memory(10000);
memstat();
Benim için, çıktısı:
current memory usage: 73308
current memory usage: 74996
current memory usage: 506676
[Daha fazla nesne üyeleri unset düzenlenebilir]