Вот одна популярная ошибка, где вы можете тратить кучу ресурсов, используя init () вместо preDispatch (): если вы осуществляете управление доступом с помощью метода preDispatch () плагина контроллера, последовательность вызовов будет такой: YourController :: init (), YourAccessPlugin :: preDispatch (), YourController :: preDispatch (), YourController :: whatAction. Это означает, что если вы выполняете какие-либо тяжелые действия в init (), то неавторизованные пользователи могут запустить его . Скажем, например вы запускаете новое пространство имен сеансов в init (), тогда бессмысленные поисковые роботы могут привести к тому, что ваша база данных сеансов будет завалена пустыми сеансами. Поэтому придерживайтесь очень простых простых вещей в init, избегайте касания или изменения каких-либо ресурсов, избегайте доступа к базе данных.