Не увлекайтесь behavior-ами, память утекает.
Не увлекайтесь behavior-ами, память утекает.
Собственно я увлекся цеплянием поведений в методе behaviors() модели. При выводе в гриде (с учетом релейшнов и прочих подцепленных моделей) PHP сожрал всю память уже гдето на 20й строчке. Та же картина наблюдалась при импорте (XML парсер + AR). Полистав форум нарыл это замечание: viewtopic.php?f=6&t=1098#p8922
Видимо это никак никак не фиксится?
Теперь соотв-но цепляю нужные поведения в контроллере и только там где собираюсь их использовать. Так наверное правильно.
Видимо это никак никак не фиксится?
Теперь соотв-но цепляю нужные поведения в контроллере и только там где собираюсь их использовать. Так наверное правильно.
Re: Не увлекайтесь behavior-ами, память утекает.
всю память, это сколько? да, и версию php укажите.При выводе в гриде (с учетом релейшнов и прочих подцепленных моделей) PHP сожрал всю память уже гдето на 20й строчке.
Re: Не увлекайтесь behavior-ами, память утекает.
PHP Version 5.2.17
PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 45 bytes) in /home/uXXXX/YII/framework/base/CComponent.php on line 472
PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 45 bytes) in /home/uXXXX/YII/framework/base/CComponent.php on line 472
Последний раз редактировалось limion 2012.10.26, 12:22, всего редактировалось 1 раз.
Re: Не увлекайтесь behavior-ами, память утекает.
Самое простое - обновитесь до 5.3, там новый сборщик мусора. Проблема давно известна.
- timlar
- Сообщения: 1382
- Зарегистрирован: 2009.09.19, 17:49
- Откуда: Украина, Днепропетровск
- Контактная информация:
Re: Не увлекайтесь behavior-ами, память утекает.
И при парсинге XML юзать построитель запросов, вместо AR.
Twitter: @timlar_ua
Re: Не увлекайтесь behavior-ами, память утекает.
Обновиться не могу это хостер, скорее надо менять хостера, уж слишком много шишек стало валиться с мастерхоста.anton44eg писал(а):Самое простое - обновитесь до 5.3, там новый сборщик мусора. Проблема давно известна.
Проблема как бы известна, но не так уж чтоб всем, я порылся на форуме и нашел только пару замечаний на эту тему. Вот хотелось как-то более в явном виде об этом сказать.
Re: Не увлекайтесь behavior-ами, память утекает.
Это понятно, что использовать DAO лучше в даном случае чем AR. Но одно дело когда что-то ест памяти и процвремени просто больше, а совсем другое когда бесконечно больше.timlar писал(а):И при парсинге XML юзать построитель запросов, вместо AR.
Я убрал поведения и все работает как надо, всеравно парсер у меня консольный, время мне не важно, а мусор стал коллекториться нормально.
Re: Не увлекайтесь behavior-ами, память утекает.
Здравствуйте.
Похожая же проблема, но пока без "PHP Fatal error: Allowed memory size"
Из базы выбираются все записи из таблицы. Всего их 293
В view такой код:
В модели:
В итоге по данным функции memory_get_peak_usage макс. расходуется 40 мегабайт памяти.
К модели привязаны 4 behavior и 1 relation. Если убрать их то расход памяти приходит в норму, примерно 5-7 мегабайт.
PHP версии PHP/5.3.2 и включен APC.
Похожая же проблема, но пока без "PHP Fatal error: Allowed memory size"
Из базы выбираются все записи из таблицы. Всего их 293
В view такой код:
Код: Выделить всё
$this->widget('zii.widgets.grid.CGridView',array(
'id'=>'main-grid',
'dataProvider'=>$model->search(),
'columns'=>array(
'id',
),
));
Код: Выделить всё
public function search()
{
return new CActiveDataProvider($this, array(
'criteria'=>new CDbCriteria(),
'pagination'=>false,
'sort' => array(
'defaultOrder'=>'order_position',
),
));
}
К модели привязаны 4 behavior и 1 relation. Если убрать их то расход памяти приходит в норму, примерно 5-7 мегабайт.
PHP версии PHP/5.3.2 и включен APC.
Re: Не увлекайтесь behavior-ами, память утекает.
1. Используете жадную загрузку?Если убрать их то
2. Убрали только бихейворы или релейшн тоже убрали?
3. Какие бихейворы подключены?
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Не увлекайтесь behavior-ами, память утекает.
293 записи AR да ещё и через DataProvider без постраничной разбивки — это уже много и без behavior.
Нравится Yii? Давайте сделаем его лучше!.