使用symfony表单验证器进行Bulk-Insert

时间:2011-06-29 13:10:05

标签: validation forms symfony1 memory-management bulkinsert

我收到用户的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 KB。但是如果“形式”中存在错误,则内存差异为6-7 KB。因此,当CSV文件非常庞大时,我会收到allowed_memory错误。

我试图释放表格,如:

unset($pf)
$pf = null;
$pf = new ProductForm();

没有成功。这更糟糕了!

ans想法? THX!

1 个答案:

答案 0 :(得分:0)

您可以在数据库yml中禁用doctrine Profiler:

  dev:
    doctrine:
      class: sfDoctrineDatabase
      param:
        profiler: false