0

可能重复:
php/symfony/doctrine 内存泄漏?

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

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

并显示此错误:

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

所以我需要知道一种传递记忆的方法。

4

4 回答 4

1

我发现让 Symfony 释放内存可能很棘手,尽管您可以尝试设置$discounts = null;而不是取消设置(请参阅使用 PHP 释放内存的好处:unset() 或 $var = null)。

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

于 2012-11-27T19:42:45.497 回答
1

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

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

于 2012-11-27T19:43:24.810 回答
0

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

php/symfony/doctrine 内存泄漏?

感谢您的所有建议!

于 2012-11-27T22:55:47.523 回答
-1

你可以在 PHP 中使用unset(). 这就是你已经在做的事情。

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

memory_limit

到更大的数量。

于 2012-11-27T19:43:44.213 回答