Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je viens de développer un site avec Zend Framework, mais j'ai des problèmes de lenteurs (même lorsque les appels aux bases de données sont réduites). J'ai suivi toutes les pratiques recommandées sur les tutos, et rien n'y fait.
Le problème se révèle surtout quand le site est en ligne (sur un hébergement pro mutualisé chez ovh). Quand je navigue de pages en pages, au bout de quelques-une j'ai "Internal server error".
Si quelqu'un a le même problème ??
Je vous colle le code de mon boostrap pour vous aidez à voir d'où vient le problème...
Merci
[lang=php]<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { // Fichier de configuration config.ini protected $_configMain; // Objet de session protected $_session; // Instance du ontrôlleur frontal protected $_front; // Instance de la vue protected $_view; protected function _initCache() { // Initialisation du cache, passage du chemin de sauvegarde $this->_cache = new App_Cache; $this->_cache->setup(CACHE_LIFETIME, CACHE_PATH); } protected function _initActionHelpers() { Zend_Controller_Action_HelperBroker::addPrefix('App_Controller_ActionHelpers'); } protected function _initView() { $view = new Zend_View(); // Configuration du jeu de caractères utilisé $view->setEncoding('UTF-8'); // Déclaration du doctype $view->doctype('XHTML1_TRANSITIONAL'); // Ajoutons la vue au ViewRenderer $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper( 'ViewRenderer' ); $viewRenderer->setView($view); $this->_view = $view; return $view; } protected function _initFrontControllerResource() { // On récupère l'instance du controlleur frontal $this->bootstrap('FrontController'); $this->_front = $this->getResource('frontController'); } protected function _initConfig() { // Récupération de l'objet Config dans le cache if (!($this->_configMain = App_Cache::get('Config'))) { // Récupération du fichier de configuration config.ini // S'il n'existe pas, on charge le fichier de configuration par défault $configFile = (file_exists(APPLICATION_PATH . "/configs/config.ini")) ? APPLICATION_PATH . "/configs/config.ini" : APPLICATION_PATH . "/configs/configDefault.ini"; $this->_configMain = new Zend_Config_Ini($configFile, APPLICATION_ENV); // On passe l'objet Config en cache App_Cache::set($this->_configMain, 'Config'); } Zend_Registry::set('Config',$this->_configMain); $this->_front->setParam("Prefix", $this->_configMain->prefix); // Chargement de la configuration de session if (!($configSession = App_Cache::get('configsession'))) { $configSession = new Zend_Config_Ini(APPLICATION_PATH . DIRECTORY_SEPARATOR . 'configs/session.ini', APPLICATION_ENV); App_Cache::set($configSession, 'configsession'); } // Configuration de la session (impérativement avant son démarrage) Zend_Session::setOptions($configSession->toArray()); Zend_Session::setOptions(array('save_path' => APPLICATION_PATH . $configSession->save_path)); // Partage (et création ou restauration) de l'objet de session dans le registre // Ce premier appel à new Zend_Session_Namespace démarre la session PHP Zend_Registry::set('session', $session = new Zend_Session_Namespace($configSession->name)); $this->_session = $session; } protected function _initPlaceholders() { $this->_view->doctype('HTML5'); $message = Tools::getFlashMessage(Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->getMessages()); $this->_view->flash_message = $message; if (!empty($message)) { // Apparition en jquery de la bulle d'information $this->_view->headScript()->captureStart(); Tools::displayFlashMessage(); $this->_view->headScript()->captureEnd(); } } protected function _initLog() { // Création de l'objet log $date = date('Ymd'); $currentFileName = 'logFile-'.$date.'.log'; $currentFilePath = DATA_PATH.'/logs/'.$currentFileName; // Création du fichier log if (!file_exists($currentFilePath)) fopen(DATA_PATH.'/logs/'.$currentFileName, 'w'); $fileName = (Zend_Registry::get('Config')->debug == 1) ? 'php://output' : '../data/logs/'.$currentFileName; $writer = new Zend_Log_Writer_Stream($fileName); $log = new Zend_Log($writer); // On personnalise l'information à enregistrer en ajoutant un parametre (adresse Ip et navigateur) $log->setEventItem('user_agent', $_SERVER['HTTP_USER_AGENT']); $log->setEventItem('client_ip', $_SERVER['REMOTE_ADDR']); // Ajout des param. enregistrés dans le format du journal à écrire $defaultFormat = Zend_Log_Formatter_Simple::DEFAULT_FORMAT; $format = '%client_ip% %user_agent%' . $defaultFormat; // Ajout du format du journal au log $writer->setFormatter(new Zend_Log_Formatter_Simple($format)); Zend_Registry::set('Log',$log); } protected function _initPlugin() { // On déclare le plugin du controlleur frontal qui intervient à chaque requête $this->_front->registerPlugin( new EdifiaApp_Controller_Plugins_Session); // On déclare le plugin qui redirige les requêtes $this->_front->registerPlugin( new EdifiaApp_Controller_Plugins_Root); } protected function _initDb() { try { // On instancie l'objet de connexion Zend_Db $db = Zend_Db::factory($this->_configMain->database); $db->query("SET NAMES 'UTF8'"); Zend_Registry::set('Db',$db); // Passage de la connexion à toutes les classes passerelles Zend_Db_Table_Abstract::setDefaultAdapter($db); } catch (Zend_Db_Exception $e) { // on passe l'exception sous silence, elle sera gérée dans le système MVC plus tard } } protected function _initBaseUrl() { // Instanciation manuelle de l'aide de vue BaseUrl() $helper = new Zend_View_Helper_BaseUrl(); $this->_view->registerHelper($helper, 'baseUrl'); } protected function _initAcl() { if (!isset($this->_session->acl)) { $acl = new Zend_Acl(); /* Gestion des rôles pour l'administration du site */ $acl->addRole(new Zend_Acl_Role('admin')); $acl->addRole(new Zend_Acl_Role('dev')); $acl->addRole(new Zend_Acl_Role('com')); $acl->add(new Zend_Acl_Resource("administration")); /* Gestion des contrôles d'accès pour l'administration*/ $acl->allow('dev', 'administration', 'dev'); $acl->allow('com', 'administration', 'com'); $acl->allow('admin', 'administration', 'admin'); /* Gestion des rôles pour les pages du site */ $acl->addRole(new Zend_Acl_Role('invite')); // Staff hérite de Invité $acl->addRole(new Zend_Acl_Role('staff'), 'invite'); // Editeur hérite de staff $acl->addRole(new Zend_Acl_Role('editeur'), 'staff'); // Administrateur n'hérite pas d'accès $acl->addRole(new Zend_Acl_Role('administrateur')); /* Gestion des contrôles d'accès aux pages du site */ $acl->allow('invite', null, 'voir'); $acl->allow('staff', null, array('edit', 'submit', 'relire')); $acl->allow('editeur', null, array('publier', 'archiver', 'supprimer')); $acl->allow('administrateur'); $this->_session->acl = $acl; } } protected function _initPaginator() { Zend_Paginator::setDefaultScrollingStyle('Sliding'); Zend_View_Helper_PaginationControl::setDefaultViewPartial( 'index/paginator-control.phtml' ); } }
Hors ligne
Salut, penses aux balises code la prochaine fois .
As-tu accès aux logs du serveur apache ? Je pense qu'il faut chercher de ce côté afin de comprendre ce qui déclenche l'erreur 500.
Hors ligne
Merci pour la réponse, en effet je penserais aux balises...
Voici les logs d'erreur :
[Mon Aug 13 09:37:31 2012] [error] [client 2.13.170.185] [host www.mondomaine.fr] Premature end of script headers: index.php, referer: http://www.mondomaine.fr/entreprise [Mon Aug 13 09:37:31 2012] [error] [client 2.13.170.185] [host www.mondomaine.fr] Premature end of script headers: index.php [Mon Aug 13 09:37:31 2012] [error] [client 2.13.170.185] [host www.mondomaine.fr] Premature end of script headers: index.php [Mon Aug 13 09:37:33 2012] [error] [client 2.13.170.185] [host www.mondomaine.fr] Premature end of script headers: index.php, referer: http://www.mondomaine.fr/ [Mon Aug 13 09:37:35 2012] [error] [client 2.13.170.185] [host www.mondomaine.fr] Premature end of script headers: index.php [Mon Aug 13 09:37:45 2012] [error] [client 2.13.170.185] [host www.mondomaine.fr] Premature end of script headers: index.php
Hors ligne
N'est-ce pas du à "memory_limit" étant donné que je suis chez ovh en hébergement mutualisé ?
Hors ligne