При включенном профилировании каждый запрос попадает в лог профайлера (а порой и не одного). При этом лог не очищается, пока процесс не будет завершен. В результате с каждым запросом увеличивается количество памяти, потребляемое приложением и в итоге мы вылетаем с ошибкой выделения памяти
Чтобы побороть это дело, не отключая профайлинг в принципе (например, через конфиги), можно сделать такой финт ушами:
function dummyFunction(){
//выключаем все используемые логроуты в начале
foreach(Yii::app()->log->routes as $route){
$route->enabled = false;
}
//цикл, в котором происходят многочисленные обращения к БД.
foreach(.....){
......
}
//включаем логроуты обратно
foreach(Yii::app()->log->routes as $route){
$route->enabled = true;
}
}
По идее, можно отключать только те логроуты, что профилируют запросы, но использованное упрощение в моем случае оказалось вполне допустимо.
Комментариев нет:
Отправить комментарий
Напишите что-нибудь по теме