Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-12-2007 17:11:09

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

ZFPanel - Gestion d'application en production

Bonjour,

Je me suis lancé, il y a de ça 2 semaines, sur un petit projet basé sur zf.

Ce projet est inspiré de Zend Platform, qui nécessite une licence payante, assez cher.
Alors bien sur, l'objectif n'est pas de rivalisé avec cette solution, car c'est tout bonnement impossible.

Cependant, mon idée est  de proposer gratuitement, un système permettant la gestion d'événements (erreurs php, exceptions, éxecution lente, événement personalisé) et la visualisation du log interne de l'application.

ZFPanel serait fourni avec une interface graphique permettant la gestion des événement, logs, etc.
Il serait à la fois multi-utilisateurs et multi-projets.

Chaque projet a son propre fichier de configuration xml, de ce style :

Code:

<?xml version="1.0"?>
<configdata>
    <production>
         
    <projectid>zfp1</projectid>
        <database>
            <adapter>PDO_MYSQL</adapter>
            <params>
                <host>localhost</host>
                <dbname>ZFPanel</dbname>
                <username>root</username>
            <password></password>
            </params>
        </database>

        <!-- Events parameters -->
        <events>
            <type>
                <custom>yes</custom>
                <exception>yes</exception>
                <phperror>yes</phperror>
                <slowexec>
                    <activate>yes</activate>
                    <relative>500</relative>
                    <absolute>2000</absolute>
                </slowexec>
            </type>
            <param>
                <dump>
                    <post>yes</post>
                    <get>yes</get>
                    <cookie>yes</cookie>
                    <session>yes</session>
                    <server>yes</server>
                    <backtrace>yes</backtrace>
                </dump>
            </param>
            <email_alert>contact@netatoo.fr</email_alert>
        </events>

    </production>

</configdata>

La mise en place de ZFPanel dans son application serait assez simple, elle nécésiterait la création d'une base de données (commune à tous les projets), et la mise en de ces quelques lignes au début du bootstrap :

Code:

require_once 'ZFP.php';
$zfp = ZFP::getInstance();
$zfp->setConfig('/conf/zfpanel_project.xml', 'production');

Ainsi, pour capturer toutes les exceptions, par exemple celles du Zend Framework, il suffirait d'étendre la classe Zend_Exception par ZFP_Core_Exception :

Code:

class ZFP_Core_Exception extends Exception
{
    public function __construct($msg = NULL, $code = 0)
    {
        parent::__construct($msg, $code);
        new ZFP_Core_Event_Exception($this);
    }
}

Zend_Exception extends ZFP_Core_Exception
{}

Pour les erreurs php (celle qui sont catchables par set_error_handler), elles sont enregistrées sans manipulation particulière, idem pour les slow execution.

Il serait également possible d'enregistrer des événements personnalisés :

Code:

...
new ZFP_Core_Event_Custom('event name', 'event description');
..

Voici quelques aperçu du projet en 0.0.1 :

System overview
http://www.netatoo.fr/ZFPanel/1.jpg

Events list :
http://www.netatoo.fr/ZFPanel/2.jpg

Events viewer :
http://www.netatoo.fr/ZFPanel/3.jpg
http://www.netatoo.fr/ZFPanel/4.jpg


Encore une fois, c'est loin de rivaliser avec Zend Platform du simple fait que ce dernier utilise des extensions php #C, donc c'est forcément plus rapide, de plus, ZP permet de faire beaucoups plus que ça en terme de gestion de performance, clustering, etc...

Cependant, cela peut être interessant pour ceux qui n'ont pas les moynes d'investir dans ZP, mais qui veulent avoir un suivi de leurs application...

Je mettrai en ligne le code source d'ici quelques semaines, j'attends d'avoir un base solide et assez stable pour la mettre en proposition.

Qu'en pensez vous ? (que ce soit graphiquement, que techniquement, et dans l'idée)

Simon

Hors ligne

 

#2 18-12-2007 18:10:40

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: ZFPanel - Gestion d'application en production

L'idée est bonne. Il faut voir l'impacte du monitoring sur les perfs globale.

Hors ligne

 

#3 18-12-2007 18:19:20

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: ZFPanel - Gestion d'application en production

En effet c'est un gros soucis que je m'efforce d'améliorer.

Cela necessite une instance de Zend Config, une autre de Zend Db, avec un cache c'est déjà un peu amélioré, mais il y a des solutions je pense.

Dernière modification par Phoenix17 (20-12-2007 00:23:09)

Hors ligne

 

#4 18-12-2007 19:52:41

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Re: ZFPanel - Gestion d'application en production

En tout cas l'interface graphique a de la gueule !

Hors ligne

 

#5 18-12-2007 21:20:43

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: ZFPanel - Gestion d'application en production

merci 2mx wink

Je suis en train de voir ce qui serait le plus intéressant : utiliser un fichier config.xml pour chaque projet, ou bien utiliser une table config de la base de données.

Chacun à ses avantages & inconvénient, mais utiliser la base de données aurait le sacré avantage de ne pas instancier Zend_Config, et surtout, permettrait un paramètrage plus rapide via ZFPanel...

A votre avis, qui sera le vainqueur ?

Hors ligne

 

#6 19-12-2007 05:28:12

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: ZFPanel - Gestion d'application en production

Voilà une idée que je viens de concrétiser : l'affichage graphique du profiling des requêtes en utilisant Zend_Db_Profiler :

En l'occurence, ce serait une option activable uniquement pour les events de type "Slow execution" (sinon ca devient assez lourd, surtout si on utilise beaucoups les events custom).

http://www.netatoo.fr/ZFPanel/5.jpg

EDIT : et j'ai finalement choisit la configuration multi-projets via une table de db plutot que Zend_Config. Après quelques profiling sous ZS, l'éxecution total du ZFPanel dans une application est entre 15 à 20 ms, correct ?

Dernière modification par Phoenix17 (19-12-2007 05:31:31)

Hors ligne

 

#7 19-12-2007 09:14:56

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: ZFPanel - Gestion d'application en production

Très bon ca ^^

Hors ligne

 

#8 19-12-2007 10:08:14

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: ZFPanel - Gestion d'application en production

Yep, moi je dis que ça gère tout ça (parole de pauvre qui ne peut pas se payer Zend Plateforme smile )

Hors ligne

 

#9 21-12-2007 22:17:54

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZFPanel - Gestion d'application en production

Excellent, bravo !


Société : Direct Info Service

Hors ligne

 

#10 22-12-2007 09:57:41

golivier
Membre
Lieu: vendée
Date d'inscription: 20-03-2007
Messages: 47
Site web

Re: ZFPanel - Gestion d'application en production

ça a l'air vraiment sympatique ....

Hors ligne

 

#11 24-12-2007 18:53:12

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: ZFPanel - Gestion d'application en production

Je suis actuellement en train de dév. une classe de benchmark, qui completera l'outil Profiler.

Par défaut, si l'application utilise Zend Framework, un plugin controller peut être ajouter afin de benchmarker la dispatchLoop ainsi que chaque action dispactcher.

Au niveau de l'affichage, je compte utiliser a peu près le même système d'affichage que le Profiler de Zend Studio (onglet trace d'appel).

Il serait tout à fait possible d'ajouter ses propres markers :

Code:

$profiler->markerStart('Zend//Controller//Front//dispatchLoop');

     $profiler->markerStart('Zend//Controller//Front//dispatchLoop//myAction');

     $profiler->markerEnd('Zend//Controller//Front//dispatchLoop//myAction');

$profiler->markerEnd('Zend//Controller//Front//dispatchLoop');

Permettra de manipuler un tableau associatif de ce genre :

Code:

array(
    'Zend' => array(
        'Controller' => array(
            'Front' => array(
                'dispatchLoop' => array(
                    'myAction => array()
                )
            )
        )
    )
);

Ou chaque niveau du tableau contient un élément nommé '_bench' contenant un object de benchmark.

Je vous en dirai un peu plus, code à l'appui, ces prochains jours,

Joyeuses fêtes à vous wink

Dernière modification par Phoenix17 (24-12-2007 18:55:06)

Hors ligne

 

#12 26-12-2007 05:37:19

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: ZFPanel - Gestion d'application en production

Voici un aperçu du module de monitoring permettant de visualiser graphiquement les benchmarks :

http://www.netatoo.fr/ZFPanel/zfpcapt_bench.jpg

(j'ai volontairement placer un sleep(1) à l'intérieur d'un marker (ici dans le bootstrap))

La diode de marker est :

- verte lorsque son temps d'exec est inférieur ou égal à 1% du temps d'éxécution de toute la page
- jaune entre 1 et 49%
- rouge >= 50%

L'affichage / masquage des infos comme le % ou le temps d'exec en ms et secondes est fait en js. (a noter d'ailleurs que toute l'appli ZFPanel est WEB 2.0 (xhtml/css/ajax) et Prototype + Scriptaculous.

Pour l'instant, je n'ai pas prévu de jouer à 100% l'accéssibilité (ZFP fonctionne uniquement avec javascript activé et un navigateur moderne) du simple fait que ce type de solution est destiné à des développeurs avertis, et non au tout public.

Le module de benchmark serait activable uniquement pour les évènement de type 'Slow Execution', comme pour le Database Profiler.

Voila le plugin du controller permettant de profiler dans la mesure du possible :

Code:

require_once 'Zend/Controller/Plugin/Abstract.php';

class ZFP_Core_Controller_Plugin_Profiler extends Zend_Controller_Plugin_Abstract
{
    /**
     * Contain instance of slow exec event
     *
     * @var ZFP_Core_Event_SlowExecution
     */
    private $_profiler = null;
    
    /**
     * Contain list of marker names
     * 
     * @var array
     */
    private $_markerName = array(
        'route'         => 'Zend//Controller//Front//route()',
        'dispatchLoop'     => 'Zend//Controller//Front//dispatchLoop()'
    );
    
    public function __construct() 
    {
        $this->_profiler = ZFP_Core_Event_SlowExecution::getInstance();
    }
    
    public function routeStartup(Zend_Controller_Request_Abstract $request)
    {
        $this->_profiler->markerStart($this->_markerName['route']);
    }

    public function routeShutdown(Zend_Controller_Request_Abstract $request)
    {
        $this->_profiler->markerEnd($this->_markerName['route']);
    }

    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {
        $this->_profiler->markerStart($this->_markerName['dispatchLoop']);
    }

    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        $this->_profiler->markerStart($this->_markerName['dispatchLoop'].'//'.$request->getActionName().'Action');
    }

    public function postDispatch(Zend_Controller_Request_Abstract $request)
    {
        $this->_profiler->markerEnd($this->_markerName['dispatchLoop'].'//'.$request->getActionName().'Action');
    }

    public function dispatchLoopShutdown()
    {
        $this->_profiler->markerEnd($this->_markerName['dispatchLoop']);
    }
}

Bonne journée wink

Dernière modification par Phoenix17 (26-12-2007 05:50:19)

Hors ligne

 

#13 02-01-2008 18:32:11

Seb
Membre
Lieu: Thuin (Belgique)
Date d'inscription: 19-11-2007
Messages: 62
Site web

Re: ZFPanel - Gestion d'application en production

Salut Phoenix,

Beau projet que voilà et super intéressant. As-tu déjà mis le code quelque part ?


Sébastien Bervoets

Hors ligne

 

#14 02-01-2008 20:22:21

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: ZFPanel - Gestion d'application en production

Bonsoir Seb,

Non je n'ai encore rien mis ni en ligne, simplement par manque de temps.

Car bien que l'interface graphique soit déjà clairement établie, au niveau du code c'est pas encore hyper bien organisé.

Egalement au niveau des performances ya pas mal de chose à faire.

Dans tous les cas, je compte rassembler l'ensemble des classes dans un mini projet nommé 'Zendex' (Zend Extensions) qui contiendra entre autre, les classes permettant la gestion des événements.

Je mettrai ça sur svn avec googlecode d'ici quelques temps, ce qui permettra à tout le monde d'y contribuer.

D'ailleurs, au niveau du nom du projet, j'hésite encore entre :

- Zendex (Zend Extensions)
- ZFX (Zend Framework Xtensions)
- ZendFx (Zend Framework Xtensions)

Votre avis ?

Dernière modification par Phoenix17 (02-01-2008 20:24:07)

Hors ligne

 

#15 03-01-2008 08:33:36

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Re: ZFPanel - Gestion d'application en production

je vote pour Zfx

Hors ligne

 

#16 03-01-2008 09:09:10

Seb
Membre
Lieu: Thuin (Belgique)
Date d'inscription: 19-11-2007
Messages: 62
Site web

Re: ZFPanel - Gestion d'application en production

ZFX est pas mal utilisé dans le domaine de la 3D je pense.

Moi j'aime bien ZendFx (aucune réf dans GG en plus).

Je pense que ton projet est super et qu'il vaudrait même bien la peine qu'on lui fasse un petit site. Qu'est-ce que tu en dis ?


Sébastien Bervoets

Hors ligne

 

#17 03-01-2008 09:26:08

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: ZFPanel - Gestion d'application en production

Moi, je vote pour Zendex car c'est celui qui qui colle le mieux avec la casse de Zend.

Hors ligne

 

#18 03-01-2008 09:27:13

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: ZFPanel - Gestion d'application en production

Nous (je smile ) sommes actuellement en train de (re)développer un "mur de codes" (packages, classes, modèles ... ) à la http://plugins.jquery.com/ pour le mettre à jour et le rendre plus accessible et mieux organisé.

Vous aurez toujours une place ici wink

Hors ligne

 

#19 03-01-2008 11:00:13

Seb
Membre
Lieu: Thuin (Belgique)
Date d'inscription: 19-11-2007
Messages: 62
Site web

Re: ZFPanel - Gestion d'application en production

J'ai hâte de voir des bons projets autour de ZF ... Tenez-nous au courant.


Sébastien Bervoets

Hors ligne

 

#20 06-01-2008 20:39:19

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Re: ZFPanel - Gestion d'application en production

Seb a écrit:

ZFX est pas mal utilisé dans le domaine de la 3D je pense.

Ok, en plus il y a déjà un projet utilisant cette extension http://code.google.com/p/zfx/

Hors ligne

 

#21 07-01-2008 02:54:08

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: ZFPanel - Gestion d'application en production

smile oui je l'ai créer il y a quelques semaines pour tester googlecode, mais je n'y ai rien fait de vraiment intéressant pour l'instant ^

Hors ligne

 

#22 07-01-2008 10:58:27

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZFPanel - Gestion d'application en production

On avait pensez à ZFE (ZF_Extended) un moment, phillipe devait nous créer un svn et un projet dans l'activecollab.
Effectivement beaucoup d'idées arrivent c'est cool smile


Société : Direct Info Service

Hors ligne

 

#23 17-04-2008 15:26:55

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

Re: ZFPanel - Gestion d'application en production

Bonjour ça en est ou ce projet?

Hors ligne

 

#24 05-05-2008 11:11:08

lesauf
Membre
Lieu: Yaoundé - Cameroun
Date d'inscription: 29-11-2007
Messages: 52
Site web

Re: ZFPanel - Gestion d'application en production

oh oui oui! c'est un projet intéressant. Où en est-il?

Hors ligne

 

#25 25-07-2008 16:07:04

badaboom
Nouveau membre
Date d'inscription: 25-07-2008
Messages: 3

Re: ZFPanel - Gestion d'application en production

J'avais contacter Zend pour platorm et suite à leur proposition, je leur avais dit que j'attendais la version de Phoenix hors il m'a dit 'zend staff' que phoenix était un de leur client qui possèdait platform et qu'il trouvait bizarre de voir apparaitre ce Panel. Peut être que Panel était basé sur platform ... bizarrement pu de nouvelle depuis de nombreux mois ...

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