Как уничтожить объект в 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 ответа
С помощью unset()
специально освободит память, связанную с переменной, однако я сомневаюсь, что установка $discounts
Переменная - это то место, где вы сталкиваетесь с проблемой выделения памяти, поскольку она была бы перезаписана с каждым проходом цикла. Является $array_data
сам по себе слишком большой? Является ли один из методов, выполняемых на $discounts
объект, вызывающий проблему?
Попробуйте установить некоторые точки останова в своем коде, чтобы лучше определить, где возникает проблема с памятью.
Я обнаружил, что может быть сложно заставить Symfony освободить память, хотя вы можете попробовать установить $discounts = null;
вместо того, чтобы сбросить его (см. Что лучше при освобождении памяти с помощью PHP: unset() или $ var = null).
Для таких простых массовых вставок я бы предложил делать вставки с помощью SQL (предпочтительно PDO) вместо Doctrine.
Вы можете уничтожить объект в PHP, используя unset()
, Это то, что вы уже делаете.
Чтобы увеличить объем доступной памяти - необходимо установить значение конфигурации PHP
memory_limit
к большему количеству.