использовать валидатор форм Symfony для Bulk-Insert - PullRequest
0 голосов
/ 29 июня 2011

Я получаю 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();

безуспешно. Это только хуже!

и идеи? ТНХ!

1 Ответ

0 голосов
/ 29 июня 2011

Вы можете отключить профилирование доктрины в своей базе данных yml:

  dev:
    doctrine:
      class: sfDoctrineDatabase
      param:
        profiler: false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...