Я получаю CSV-файл от пользователя и хочу вставить его в базу данных. Я хочу использовать форму проверки:
$pf = new ProductForm();
$old_memory_usage = 0;
while($data = $csvreader->read())
{
$mem = memory_get_usage() / 1024;
echo "Memory-Usage: " . $mem . " KB; Mem-Diff: " . $mem - $old_memory_usage . "\n";
$old_memory_usage = $mem;
$p = new Product();
$p->fromArray($data);
$pf->bind($p->toArray(), array());
if($pf->isValid())
{
$p->save();
}
else
{
//display error message to the user
}
}
Это прекрасно работает, когда isValid () возвращает true. Разница в памяти составляет 0 КБ. Но если в «форме» есть Ошибка, разница в памяти составляет 6-7 КБ. Поэтому я получаю сообщение об ошибке allow_memory, когда CSV-файл очень большой.
Я попытался освободить форму как:
unset($pf)
$pf = null;
$pf = new ProductForm();
безуспешно. Это только хуже!
и идеи?
ТНХ!