Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-08-2012 09:55:49

tony35
Membre
Date d'inscription: 08-08-2011
Messages: 19

Lenteurs et plantage...

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

Code:

[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

 

#2 13-08-2012 10:26:03

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Lenteurs et plantage...

Salut, penses aux balises code la prochaine fois wink.

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

 

#3 13-08-2012 11:03:57

tony35
Membre
Date d'inscription: 08-08-2011
Messages: 19

Re: Lenteurs et plantage...

Merci pour la réponse, en effet je penserais aux balises...

Voici les logs d'erreur :

Code:

[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

 

#4 13-08-2012 11:05:03

tony35
Membre
Date d'inscription: 08-08-2011
Messages: 19

Re: Lenteurs et plantage...

N'est-ce pas du à "memory_limit" étant donné que je suis chez ovh en hébergement mutualisé ?

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages