8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai construit une application de gestion de contenu type CMS en php 5 en me basant sur le modèle MVC et dans l'objectif d'être un intermédiaire avant de passer au framework ZEND. J'aimerai savoir comment faire pour connaitre les performances de mon application et les optimiser car je voudraisl'utiliser professionnellement. De plus j'aimerai aussi avoir votre avis sur l'utilisation de la tamporisation de sortie en terme de performance dans une application.

Merci,

Tom
Modifié par erehcab (16 Jul 2008 - 10:20)
Administrateur
Bonjour,

C'est pas trop mon domaine mais j'ai en tout cas entendu parler de Yahoo! qui publie http://developer.yahoo.com/performance/ (cherche Yahoo et performance). Tu as aussi des outils comme Firebug (et son presque équivalent sous Opera 9.5 : Dragonfly), FirePHP, ...
Pour tester les performances, une manière simple de le faire est d'utiliser un système de benchmark, il suffit de prendre le temps (avec microtime) au tout début et à la fin et de faire la différence des deux pour savoir combien de temps à mis la page pour se génerer.
Tu peux affiner les tests en mettant des marqueurs aux débuts et à la fin des codes qui te semblent douteux.
Il existe des packages qui t'aide a le faire mais bon c'est pas très compliqué "à la main" :


function microtime_diff($a,$b) {
  list($a_micro, $a_int)=explode(' ',$a);
  list($b_micro, $b_int)=explode(' ',$b);
  if ($a_int>$b_int) {
    return ($a_int-$b_int)+($a_micro-$b_micro);
  }elseif($a_int==$b_int) {
    if($a_micro>$b_micro){
      return ($a_int-$b_int)+($a_micro-$b_micro);
    }elseif($a_micro<$b_micro){
      return ($b_int-$a_int)+($b_micro-$a_micro);
    }else{
      return 0;
    }
  }else{ // $a_int<$b_int
    return ($b_int-$a_int)+($b_micro-$a_micro);
  }
}

$start_time = microtime();

//tout ton code avec les includes les templates TOUT

$end_time = microtime();

//la dernier ligne lue par php
echo number_format( microtime_diff($start_time,$end_time),4)*1000;

Modifié par matmat (16 Jul 2008 - 19:21)
Salut,

amha, il vaut mieux se concentrer sur les accès à la base de données et sur la mise en place d'un système de cache avant de se tracasser pour le temps consommé par l'exécution du code PHP lui-même Smiley cligne
Merci à vous trois pour vos réponses, je vais tester tout ça aujourd'hui !

Thomas quand tu dis :
a écrit :
il vaut mieux se concentrer sur les accès à la base de données

tu fais référence à quoi au juste, à la connexion, aux requêtes ..
Re,

je parle principalement du nombre de requêtes exécutées par page, mais il faut aussi que les tables soient bien structurées, avec les index qui vont bien, etc.
Serais tu me dire quelle est l'intérêt d'utiliser la mise en cache afin d'optimiser les performances de l'application ?
AMHA si le fonctionnement de ton système a été bien pensé avant et pendant le codage alors il est déjà optimisé par contre si tu en viens à te poser la question de la performance seulement après avoir produit le code c'est pas bon signe.
Ouai je sais .. et tu as tout à fait raison, mais il y à un début à tout Smiley smile
Et du coup autant se poser les bonnes questions et ne pas re faire les même erreurs !!

Déjà en me basant sur l'architecture MVC j'ai pris l'initiative de bien structurer mon application. Maintenant, et vu que je n'aime pas me reposer sur mes lauriers, je vais recommencer en me posant d'autres questions dès le début du projet et celle là en fait partie Smiley biggrin
Oui je connais bien ça. Ça fait des mois que je suis sur le même projet et il a évolué au fil du temps, j'ai recommencé le codage depuis le début plusieurs fois et cette fois je crois que je tiens enfin le bon bout. Smiley smile
Yes cool !! Smiley biggrin

Moi le bon bout je vais essayer de l'obtenir avec ZEND Framework, ça m'a vraiment l'air intéressant à utiliser
Modifié par erehcab (17 Jul 2008 - 18:03)
erehcab a écrit :
Moi le bon bout je vais essayer de l'obtenir avec ZEND Framework, ça m'a vraiment l'air intéressant à utiliser
Ça m'intéresserait d'avoir des retours sur ce framework.
<hs>Je me suis penché un peu sur Zend et en fait c'est pas forcément lui qui me gêne mais plutôt l'approche MVC que je n'apprécie pas spécialement.</hs>
Ce que je trouve intéressant dans cette approche c'est qu'elle te force à respecter une certaine structure qui rend quand même plus propre et ordonné les applications que tu créer. Après au départ c'est un peu galère mais à force de faire des tutoriels ça vient !
Modifié par erehcab (19 Jul 2008 - 13:56)
Salut,
erehcab a écrit :
Serais tu me dire quelle est l'intérêt d'utiliser la mise en cache afin d'optimiser les performances de l'application ?

Il y a mise en cache et mise en cache... D'une part, ton application pourrait stocker les pages qu'elle vient de calculer pour les resservir à la prochaine requête identique en court-circuitant les requêtes SQL, voire toute exécution de code PHP. L'intérêt est évidemment de réduire le temps de calcul et les accès à la base de données.

D'autre part, la mise en cache des images, feuilles de style, etc. du côté client permet de réduire le nombre de requêtes HTTP entre le visiteur et le serveur, ce qui accélère la visite du site du point de vue de l'utilisateur, soulage le serveur qui ne doit pas réenvoyer en permanence les mêmes fichiers et te fera économiser de la bande passante en prime. Pour que cette mise en cache fonctionne, il faut que les visiteurs utilisent le cache de leur navigateur, évidemment (mais ça tout le monde le fait), mais il faut aussi que le serveur soit configuré correctement, que les informations de modification de fichier, de durée de validité, etc. soient bien envoyées. Lire le dossier de Yahoo sur les performances, c'est très intéressant Smiley cligne