Как уничтожить объект в Symfony 1.4?

Возможный дубликат:
утечка памяти в php/symfony/doctrine?

Мне нужно знать, есть ли способ уничтожить объект в 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 ответа

Решение

Я нашел решение по этой ссылке:

утечка памяти в php/symfony/doctrine?

Спасибо за все ваши советы!

С помощью unset() специально освободит память, связанную с переменной, однако я сомневаюсь, что установка $discounts Переменная - это то место, где вы сталкиваетесь с проблемой выделения памяти, поскольку она была бы перезаписана с каждым проходом цикла. Является $array_data сам по себе слишком большой? Является ли один из методов, выполняемых на $discounts объект, вызывающий проблему?

Попробуйте установить некоторые точки останова в своем коде, чтобы лучше определить, где возникает проблема с памятью.

Я обнаружил, что может быть сложно заставить Symfony освободить память, хотя вы можете попробовать установить $discounts = null; вместо того, чтобы сбросить его (см. Что лучше при освобождении памяти с помощью PHP: unset() или $ var = null).

Для таких простых массовых вставок я бы предложил делать вставки с помощью SQL (предпочтительно PDO) вместо Doctrine.

Вы можете уничтожить объект в PHP, используя unset(), Это то, что вы уже делаете.

Чтобы увеличить объем доступной памяти - необходимо установить значение конфигурации PHP

memory_limit

к большему количеству.

Другие вопросы по тегам