2010-05-31 10 views
4

Это код у меня есть:утечка памяти в Zend_Db_Table_Row?

<?php 
$start = memory_get_usage(); 
$table = new Zend_Db_Table('user'); 
for ($i = 0; $i < 5; $i++) { 
    $row = $table->createRow(); 
    $row->name = 'Test ' . $i; 
    $row->save(); 
    unset($row); 
    echo (memory_get_usage() - $start) . "\n"; 
} 

Это то, что я вижу:

90664 
93384 
96056 
98728 
101400 

Не является ли утечка памяти? Когда у меня есть 500 объектов для вставки в БД в одном сценарии, я получаю переполнение памяти. Может ли кто-нибудь помочь?

+0

Вы должны попробовать и использовать $ row = null, прежде чем вы его отмените, есть определенные «трюки», как это сделать. У меня была аналогичная проблема с symfony 1.4/doctrine 1.2, вам следует искать опцию типа «sql_auto_free queries» или что-то в этом роде. –

ответ

1

Если вы получили ошибку памяти, если вы вставляете 500 вместо 5, это действительно утечка (может быть, и кэширование). Если использование памяти поднимается вверх и вниз, это нормально: garbage collector снова освобождает память.

+0

Как вы видите в приведенном выше примере использование памяти не поднимается вниз :(С 500 + объектами у меня точно такая же динамика, только вверх – yegor256

+0

Похоже на утечку. – soulmerge