如何破坏symfony 1.4中的对象?

时间:2012-11-27 19:37:19

标签: php object memory symfony-1.4 doctrine-1.2

  

可能重复:
  php/symfony/doctrine memory leak?

我需要知道是否有办法销毁symfony 1.4中的对象,因为我在数据库中插入了一个cicle for

foreach ($array_data as $payroll_employee)
{
  $discounts = new PayrollDiscounts();
  $discounts->setPayrollId($payroll_id);
  $discounts->save();
  $discounts->free(TRUE);
  unset($discounts);
}

并显示此错误:

  

致命错误:允许的内存大小为134217728字节耗尽

所以我需要知道一种提供记忆的方法。

4 个答案:

答案 0 :(得分:1)

我发现让Symfony释放内存可能会很棘手,不过你可以尝试设置$discounts = null;而不是取消它(请参阅What's better at freeing memory with PHP: unset() or $var = null)。

对于像我这样的简单批量插入,我建议使用SQL(最好是PDO)而不是Doctrine进行插入。

答案 1 :(得分:1)

使用unset()将专门释放与变量关联的内存,但是我怀疑$discounts变量的设置是否会遇到内存分配问题,因为它会被覆盖每次循环传递。 $array_data本身太大了吗?是导致问题的$discounts对象上执行的方法之一吗?

尝试在代码中设置一些断点,以便更好地找到遇到内存问题的位置。

答案 2 :(得分:0)

我在这些链接中找到了解决方案:

php/symfony/doctrine memory leak?

感谢您的所有建议!

答案 3 :(得分:-1)

您可以使用unset()在PHP中销毁对象。这就是你已经在做的事情。

为了增加可用内存 - 您必须设置PHP配置值

memory_limit

更大的数字。