我收到来自用户的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-7KB。因此,当CSV文件非常大时,我会得到一个allowed_memory错误。
我尝试释放表单,如下所示:
unset($pf)
$pf = null;
$pf = new ProductForm();没有成功。这只会更糟!
有什么想法吗?谢谢!
发布于 2011-06-29 21:26:48
您可以在数据库yml中禁用doctrine:
dev:
doctrine:
class: sfDoctrineDatabase
param:
profiler: falsehttps://stackoverflow.com/questions/6521158
复制相似问题