Добрый вечер, изучаю сайтостроение. делаю тестовый сайтик по урокам Practical Web 2.0 Applications with PHP
выкладываю его для теста на wooohooo.ru. сайт строится на zend + smarty
сейчас столкнулся с тем, что пока нет обращений к базе данных, сайт вроде бы нормально работает, но как идет обращение к базе, сразу же видны очень сильные задержки. в чем может быть проблема? хостинг? код? в заранее благодарен. увидеть торможение можно как на этапе логина, так и на этапе просмотра опубликованных сообщений (чтоб не регится, сразу можно зайти под логином "ИСП" пароль "224224") в кратце о коде.
index.php
<?php 
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
date_default_timezone_set('Europe/Moscow');
//путь до установленного фреймворка
set_include_path('.'.PATH_SEPARATOR . '../libs'
    .PATH_SEPARATOR.'../libs/Pear'
    .PATH_SEPARATOR.get_include_path());
    
    
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace(array('CustomControllerAclManager', 'Templater', 'CustomControllerAction'
                            , 'DatabaseObject', 'FormProcessor', 'Profile','Text_CAPTCHA'
                            ,'Text_Password','Breadcrumbs','FCKeditor'));
//загрузка конфигурационной информации
$config=new Zend_Config_Ini('../settings.ini','development');
Zend_Registry::set('config',$config);
//создание обьекта для системного журнала
$logger=new Zend_Log(new Zend_Log_Writer_Stream($config->logging->file));
Zend_Registry::set('logger',$logger);
//соединение с базой данных
$params = array('host' => $config->database->hostname,
        'username' => $config->database->username,
        'password' => $config->database->password,
        'dbname'   => $config->database->database,
		'driver_options'=> array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'),
        'profiler'      => false);
$db = Zend_Db::factory($config->database->type, $params);
Zend_Registry::set('db', $db);
$db->query("set names utf8");
//настройка аутентификации пользователей
$auth = Zend_Auth::getInstance();
$auth->setStorage(new Zend_Auth_Storage_Session());
//обработка запроса пользователя
$controller=Zend_Controller_Front::getInstance();
$controller->throwExceptions(true);
$controller->setControllerDirectory($config->paths->base.'/include/Controllers/');
$controller->registerPlugin(new CustomControllerAclManager($auth));
//настройка визуализации
    $vr = new Zend_Controller_Action_Helper_ViewRenderer();
    $vr->setView(new Templater());
    $vr->setViewSuffix('tpl');
    Zend_Controller_Action_HelperBroker::addHelper($vr);
$controller->throwExceptions(true);
$controller->dispatch();
из AccountController функция 
        public function loginAction()
        {
            // if a user's already logged in, send them to their account home page
            $auth = Zend_Auth::getInstance();
            if ($auth->hasIdentity())
                $this->_redirect('/account');
            $request = $this->getRequest();
            // определение страницы, которую изначально запрашивал пользователь
            $redirect = $request->getPost('redirect');
            if (strlen($redirect) == 0)
                $redirect = $request->getServer('REQUEST_URI');
            if (strlen($redirect) == 0)
                $redirect = '/account';
            // инициализация сообщения об ошибке
            $errors = array();
            // обработка входа, если запрос сделан путем отправления формы
            if ($request->isPost()) {
                // получение данных из формы и их проверка
                $username = $request->getPost('username');
                $password = $request->getPost('password');
                if (strlen($username) == 0)
                    $errors['username'] = 'Не введен Логин';
                if (strlen($password) == 0)
                    $errors['password'] = 'Не введен Пароль';
                if (count($errors) == 0) {
                    // настройка параметров адаптера аутентификации
                    $adapter = new Zend_Auth_Adapter_DbTable($this->db,
                                                             'users',
                                                             'username',
                                                             'password',
                                                             'md5(?)');
                    $adapter->setIdentity($username);
                    $adapter->setCredential($password);
                    // попытка аутентификации пользователя
                    $result = $auth->authenticate($adapter);
                    if ($result->isValid()) {
                        $user = new DatabaseObject_User($this->db);
                        $user->load($adapter->getResultRowObject()->user_id);
                        // регистрации попытки входа в журнал
                        $user->loginSuccess();
                        // запись личных данных пользователя в сеанс
                        $identity = $user->createAuthIdentity();
                        $auth->getStorage()->write($identity);
                        // перенаправление пользователя на запрашиваемую им страницу
                        $this->_redirect($redirect);
                    }
                    // регистрация неудачной попытки входа в журнале
                    DatabaseObject_User::LoginFailure($username,
                                                      $result->getCode());
                    $errors['username'] = 'Не верный логин или пароль';
                }
            }
            $this->view->errors = $errors;
            $this->view->redirect = $redirect;
        }
user.php из датабейзобжект
<?php
    class DatabaseObject_User extends DatabaseObject
    {
        static $userTypes = array('member'        => 'Member',
                                  'administrator' => 'Administrator');
        public $profile = null;
        public $_newPassword = null;
        public function __construct($db)
        {
            parent::__construct($db, 'users', 'user_id');
            $this->add('username');
            $this->add('password');
            $this->add('user_type', 'member');
            $this->add('ts_created', time(), self::TYPE_TIMESTAMP);
            $this->add('ts_last_login', null, self::TYPE_TIMESTAMP);
            $this->profile = new Profile_User($db);
        }
        protected function preInsert()
        {
 //           $this->password = uniqid();
            $this->_newPassword = Text_Password::create(8);
            $this->password = $this->_newPassword;
            return true;
        }
        protected function postLoad()
        {
            $this->profile->setUserId($this->getId());
            $this->profile->load();
        }
        protected function postInsert()
        {
            $this->profile->setUserId($this->getId());
            $this->profile->save(false);
            $this->sendEmail('user-register.tpl');
            return true;
        }
        protected function postUpdate()
        {
            $this->profile->save(false);
            return true;
        }
        protected function preDelete()
        {
            $this->profile->delete();
            return true;
        }
        public function __set($name, $value)
        {
            switch ($name) {
                case 'password':
                    $value = md5($value);
                    break;
                case 'user_type':
                    if (!array_key_exists($value, self::$userTypes))
                        $value = 'member';
                    break;
            }
            return parent::__set($name, $value);
        }
        
        
        public function usernameExists($username)
        {
            $query = sprintf('select count(*) from %s where username = ?',
                             $this->_table);
            $result = $this->_db->fetchOne($query, $username);
            return $result > 0;
        }
        static public function IsValidUsername($username)
        {
            $validator = new Zend_Validate_Alnum();
            return $validator->isValid($username);
        }
        
        
         public function sendEmail($tpl)
        {
            $templater = new Templater();
            $templater->user = $this;
            // считывается тело сообщения
            $body = $templater->render('email/' . $tpl);
            // извлечение темы из первой строки
            list($subject, $body) = preg_split('/\r|\n/', $body, 2);
            // настройка и отправка сообщения
            $mail = new Zend_Mail('UTF-8');
			$mail->setHeaderEncoding(Zend_Mime::ENCODING_BASE64);
            // помещение адреса доставки и полного имени в строку "кому"
            $mail->addTo($this->profile->email,
                         trim($this->profile->first_name . ' ' .
                              $this->profile->last_name));
            // чтение данных администратора из конфигурационной информации
            $mail->setFrom(Zend_Registry::get('config')->email->from->email,
            Zend_Registry::get('config')->email->from->name);
            // добавление темы и тела, отправки
            $mail->setSubject(trim($subject));
            $mail->setBodyText(trim($body));
            $mail->send();
        }
		
		public function createAuthIdentity()
        {
            $identity = new stdClass;
            $identity->user_id = $this->getId();
            $identity->username = $this->username;
            $identity->user_type = $this->user_type;
            $identity->first_name = $this->profile->first_name;
            $identity->last_name = $this->profile->last_name;
            $identity->email = $this->profile->email;
            return $identity;
        }
        public function loginSuccess()
        {
            $this->ts_last_login = time();
            unset($this->profile->new_password);
            unset($this->profile->new_password_ts);
            unset($this->profile->new_password_key);
            $this->save();
            $message = sprintf('Successful login attempt from %s user %s',
                               $_SERVER['REMOTE_ADDR'],
                               $this->username);
            $logger = Zend_Registry::get('logger');
            $logger->notice($message);
        }
        static public function LoginFailure($username, $code = '')
        {
            switch ($code) {
                case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
                    $reason = 'Unknown username';
                    break;
                case Zend_Auth_Result::FAILURE_IDENTITY_AMBIGUOUS:
                    $reason = 'Multiple users found with this username';
                    break;
                case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
                    $reason = 'Invalid password';
                    break;
                default:
                    $reason = '';
            }
            $message = sprintf('Failed login attempt from %s user %s',
                               $_SERVER['REMOTE_ADDR'],
                               $username);
            if (strlen($reason) > 0)
                $message .= sprintf(' (%s)', $reason);
            $logger = Zend_Registry::get('logger');
            $logger->warn($message);
        }
		
        public function fetchPassword()
        {
            if (!$this->isSaved())
                return false;
            // генерация новых параметров пароля
            $this->_newPassword = Text_Password::create(8);
            $this->profile->new_password = md5($this->_newPassword);
            $this->profile->new_password_ts = time();
            $this->profile->new_password_key = md5(uniqid() .
                                                   $this->getId() .
                                                   $this->_newPassword);
            // сохранение нового файла в профиле и отправка сообщения.
            $this->profile->save();
            $this->sendEmail('user-fetch-password.tpl');
            return true;
        }
        public function confirmNewPassword($key)
        {
            // проверка наличия правильных временных данных
            if (!isset($this->profile->new_password)
                || !isset($this->profile->new_password_ts)
                || !isset($this->profile->new_password_key)) {
                return false;
            }
            // проверка подтверждения пароля в течении суток
            if (time() - $this->profile->new_password_ts > 86400)
                return false;
            // проверка правильности ключа
            if ($this->profile->new_password_key != $key)
                return false;
            // все правильно принимаем новый пароль для учетной записи
            // пропускаем локальный уровень, новый пароль уже в md5
            parent::__set('password', $this->profile->new_password);
            unset($this->profile->new_password);
            unset($this->profile->new_password_ts);
            unset($this->profile->new_password_key);
            // сохранение учетных данных и профиля пользователя
            return $this->save();
        }
		
        
    }
?>