Буквально недавно во время одного из этапов тестирования выловили ошибку Fatal error: Maximum function nesting level of ‘100’ reached, aborting! Погуглив, понял что дело в конфигурации xdebug’a.
И все было бы прекрасно, ведь описанное решение было очень простым. Нужно было лишь в php.ini задать значение параметра побольше, например 200.
[php] xdebug.max_nesting_level = 200[/php]
Но вот незадача: на сервере, на котором проводились тесты, xdebug не стоял. Поэтому нужно было решать проблему по-другому. Взглянув на строку, которая провоцировала проблему, я нашел решение.
Все дело было в модели, точнее в методе. Модели в данном приложении реализованы с применением паттерна «Active Record», и наследуются от Zend_Db_Table_Abstract. Так вот, так вышло, что в модели уже был описан метод insert (точнее переопределен) — это и вызвало ошибку.
[php] class Default_Model_AccountRequest extends Zend_Db_Table_Abstract {protected $_name = ‘account_requests’;
public function insert(array $_data){
return $this->insert($_data);
}
Метод можно было смело удалять. Вот так.
Спасибо, точно это я и искал. А то пишу движок для своего сайта и такаяя фигня выползла =)
Можете более точно написать как провели устранение ошибки:?
xdebug.max_nesting_level = 200 не помогло
«Все дело было в модели, точнее в методе. Модели в данном приложении реализованы с применением паттерна «Active Record», и наследуются от Zend_Db_Table_Abstract. Так вот, так вышло, что в модели уже был описан метод insert (точнее переопределен) — это и вызвало ошибку.» — не нашёл у себя такого.
Посмотрите нет ли у Вас непрерывной рекурсии.
Очень неприятная ошибка. Сталкивался с подобным при работе с файлами на не самом быстром железе. Функция в рекурсии обращалась к файлу раньше, чем тот освобождался предыдущим вызовом.