IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Optimisation] - MVC, avec ou sans POO ? Avec ou sans Framework ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut [Optimisation] - MVC, avec ou sans POO ? Avec ou sans Framework ?
    Bonjour à tous.

    Je travaille actuellement sur un projet perso.
    Je suis en train de coder ça sous une structure MVC sans POO.

    Le soucis c'est que le projet va avoir beaucoup de visites quand il sera lancé, donc il faudrait vraiment que la structure tienne le coup.

    Je me demandais si programmer en POO ou en procédurale pouvait changer quelquechose au niveau de la vitesse d'éxécution ou de l'optimisation du code ?
    Avec quoi peut-on obtenir le meilleur rendu : moins de requêtes, structure stable etc ...
    ?

    De plus, est-il utile que je fasse une structure moi même, cela m'apprend certes à avoir plus de maîtrise mais ne serait-ce pas plus rapide et plus sécurisé sous un Framework comme Zend ?

    J'ai peur qu'en utilisant Zend, j'utilise un bazooka pour tuer une mouche, en effet, je fais moi même ma structure, je code seulement les fonctions dont le projet a besoin, c'est donc plus léger et plus optimisé, je me demandais si en utilisant Zend, je vais certes perdre du temps à prendre la structure en main, mais est-ce un réel gain de temps une fois que l'outil est maîtrisé, et encore plus important, est un réal gain d'optimisation des requêtes et de l'exécution des pages (taille etc ...) ?

    Merci à tous d'éclairer ma lanterne !

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Je suis en train de coder ça sous une structure MVC sans POO.
    Ma foi pourquoi pas mais c'eut été bien plus pratique avec de l'objet oriented...

    Le soucis c'est que le projet va avoir beaucoup de visites quand il sera lancé, donc il faudrait vraiment que la structure tienne le coup.
    Il te faut donc une structure robuste, fiable, sécurisée et optmisée au niveau perfs. Un framework semble tout indiqué (un CMS en revanche serait trop lourd.)

    De plus, est-il utile que je fasse une structure moi même, cela m'apprend certes à avoir plus de maîtrise
    C'est vrai mais le risque de faire des erreurs est beaucoup plus grand que lors qu'on utilise une structure éprouvée et optimisée par des légions d'utilisateurs Et je ne parle pas de la flexibilité qu'offre un framework et qui est extrêmement laborieux et difficile à obtenir.

    J'ai peur qu'en utilisant Zend, j'utilise un bazooka pour tuer une mouche
    Les études de cas et de faisabilité sont faites pour ça. Il faut que tu te pose la question suivante: qu'est ce que mon application doit faire et dans quelles proportions (beaucoup d'utilisateurs, énormément d'utilisateurs...) ?

    mais est-ce un réel gain de temps une fois que l'outil est maîtrisé
    Oui, indubitablement. C'est pour ça que des gens créent des framework, c'est pas pour le plaisir de devenir gourou dans leur domaine (même si certains le voient comme ça.)

    Il faut aussi noter que pour développer sereinement et efficacement sur un framework il faut bien le connaitre. Sans formation payante adéquate, cela peut prendre plusieurs mois (j'ai eu des retours d'expérience faisant état d'un an d'apprentissage avant de maitriser Symphony par exemple). Mais cela dépends de tes ambitions et de ta capacité d'apprentissage.

    Tu trouvera sur internet énormément de comparatifs sur les frameworks PHP (c'est un genre de guerre sainte interne à PHP.) Je citerai les 3 plus grands du moment:
    - Zend Framework, qui se laisse volontairement utiliser comme une vulgaire librairie pour des projets ultra-spécifiques par exemple.
    - Symphony
    - Cake PHP (sa version 3 en release depuis 2009 pour PHP 5.3 s'appelle Lithium)

    Personnellement, j'utilise depuis peu Lithium: il est léger, rapide, sûr et surtout c'est un vrai bijou dans sa conception. Malheureusement les tutoriels et les livres dessus sont très rares contrairement à ses compères Zend et Symphony.

    On notera pour le cas particulier du Zend Framework qu'il est développé et maintenu par Zend Company, la société qui publie et maintient PHP depuis php3. Ils fournissent en outre un package composé de
    - Zend Framework
    - Zend Studio
    - Zend Server
    Zend Server est une plateforme pour PHP optimisée pour le Zend Framework, ça coûte des billes mais le gain de performance est à la hauteur.
    Zend Studio est un Eclipse + PDT qui ajoute de nombreuses fonctionnalités pour développer efficacement. Il est payant mais tu peux retrouver ces fonctionnalités en combinant:
    Eclipse + PDT + MyLyn + Subversive + Aptana2 + Web Development tools + RSE + Database Development Tools

    Dans tous les cas, que tu utilise un framework ou non, je te recommande Eclipse PDT pour tes développements PHP. Je l'utilise dans le milieu industriel depuis plus d'un an maintenant et ça me fait gagner un temps fou. De plus Eclipse PDT reconnait la syntaxe et l'API de PHP et te préviens des erreurs eventuelles dans ton code.

    Pour un gain de performance significatif, sache que PHP 5 est environ 2x plus rapide que PHP 4 et que PHP 5.3 est 3x plus rapide que PHP 5.1 (je cherche actuellement ma source).
    Sache que de tous les framework que j'ai cité, seul Lithium utilise à fond toutes les fonctionnalités de PHP 5.3 (c'est pour ça que je l'utilise).

    Enfin, je ne saurais que trop te recommander d'utiliser un débugger:
    - xdebug (gratuit, générique)
    - Zend Debugger (je sais plus, je l'utilise pas)
    Tu peux profiler les performances de ton application en faisant produire des fichier de profiling par xdebug et les parser avec WinCacheGrind.

    J'espère que d'autres développeurs pourront ajouter leur grain de sel à la discussion pour que tu puisse te forger une opinion.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Zend Studio est un Eclipse + PDT qui ajoute de nombreuses fonctionnalités pour développer efficacement. Il est payant mais tu peux retrouver ces fonctionnalités en combinant:
    Eclipse + PDT + MyLyn + Subversive + Aptana2 + Web Development tools + RSE + Database Development Tools
    tu peux rajouter le plugin le Zend Studio CE qui lui est gratuit :
    http://downloads.zend.com/studio-eclipse/updates/8_0/


  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    et encore plus important, est un réal gain d'optimisation des requêtes et de l'exécution des pages (taille etc ...) ?
    Je vais contrebalancer un peu l'argumentation de Benjamin Delespierre, avec ta dernière interrogation.
    Pour te répondre très clairement : NON !

    Entre un site fait en procédural et un site full framework il y'a au moins un facteur 10 en perte de performance pour le framework.
    En mettant en place les indispensable système de cache et optimiseur divers on diminue largement de moitié ce problème mais le procédural restera toujours plus rapide.
    Voir cet article pour avoir une idée de la différence entre framework et procedural

    Tout simplement car (je prend l'exemple des bdd) mysql_query(...) fait appelle directement à une fonction du langage alors que $zenddb->query(...) passe par plusieurs couche d'abstraction php avant d'atteindre une fonction du langage.

    Donc concrètement un framework pourra te faire gagner en productivité et sécurité (sous réserve de savoir l'utiliser correctement) mais n'est en aucun cas un solution pour les performances.

    Perso je suis pas partisans des énorme framework à tout faire , certes très pratique mais diablement gourmand et souvent problématique quand on débute. Peut être que l'idéal est de trouver le juste millieu entre le buldozer type Symphony/ZF et le procédural.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je voudrais ajouter qu'avec le tournant qu'a pris Javascript depuis la méthodologie Ajax, il y a un énorme gain de performances possible pour les application internet. Facebook l'a compris; pratiquement tout est fait chez le client avec Javascript.
    On peut par exemple:
    - Faire générer des PDF/CSV ou autres chez le client
    - Faire générer des graphiques/images chez le client
    - Ne remplacer qu'une partie du contenu d'une page pour ne pas régénérer / renvoyer tout le flux chez le client à chaque fois
    - Remplacer la plupart des effets sexy habituellement en flash par du JS pour un gain de performances, d'ergonomie, de référencement et surtout de bande passante
    - Délocaliser les traitements lourds (tri d'un grand tableau, recherche complexe etc.) chez le client
    - Utiliser des fonctionnalités PHP (presque) naturellement dans JS (avec XOAD par exemple)
    - et bien plus...

    Ne limiter les échanges client / serveur qu'au strict nécessaire avec Ajax est un moteur de performances à la fois pour l'utilisateur qui voit l'ergonomie du site améliorée et pour le serveur qui doit faire moins de travail.

    Pour reprendre ce que disait grunk:
    le procédural restera toujours plus rapide.
    Oui, là dessus il n'y a pas photo. Je n'ai jamais prétendu qu'un framework était plus performant que du procédural: a condition que le procédural soit correctement optimisé.
    A ce compte là on pourrait aussi dire "Le PHTML c'est encore ce qu'il y a de plus rapide". Mais il faut pas perdre de vue que ce qu'on gagne en performance avec du procédural, on le perds en flexibilité et en temps de maintenance. Le framework, c'est aussi du confort pour le programmeur, et correctement optimisé (système de cache, Ajax etc.) les perfs sont acceptables en regard d'une archi procédurale.
    Mais le procédural ne pourra jamais répondre "oui" à la question: "si je change de sgbd, ça prends 5 minutes ?". (je dis ça parce que je viens de tester avec Lithium justement, passer de MySQL à MongoDB s'est fait en changeant uniquement le fichier de configuration )

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Les framework type Lithium / CodeIgniter peuvent être le juste millieu dont je parlais dans mon post précédent .

    Apprentissage réduit par rapport au "gros" framework (quoi que lithium est pauvre en doc me semble t'il) mais les fonctionnalités intéressantes sont là
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut
    Bonsoir !

    Merci à tous pour vos réponses !
    J'ai pas mal de questions maintenant !

    Ma foi pourquoi pas mais c'eut été bien plus pratique avec de l'objet oriented...
    En effet, c'est bien ce que je me disais, disons que ça me ferait économiser des fichiers !

    Il te faut donc une structure robuste, fiable, sécurisée et optmisée au niveau perfs. Un framework semble tout indiqué (un CMS en revanche serait trop lourd.)
    Non, un CMS en effet, c'est beaucoup trop lourd et très peu maniable pour que je programme moi même. Par contre, le framework semblerait tout indiqué !

    Les études de cas et de faisabilité sont faites pour ça. Il faut que tu te pose la question suivante: qu'est ce que mon application doit faire et dans quelles proportions (beaucoup d'utilisateurs, énormément d'utilisateurs...) ?
    Les études de cas et de faisabilité ?
    Mon application sera un site de rencontre, avec des modules généraux : messagerie, chat, consultation de profils, vidéos ...
    Donc, en résumé, le projet est censé, je dis bien censé avoir beaucoup d'utilisateurs à l'avenir, plusieurs centaines par jour en tout cas.

    Faisons l'hypothèse suivante :
    - 10 000 visites / Jour
    - Chaque visiteur regarde en moyenne 20 pages
    - Si j'ai 5 requêtes par page, ça nous fait donc un total de : 1 000 000 de requêtes par jour.

    De plus, j'utilise JQuery, donc pas mal d'inclusion de JS par-ci, par là !

    Tu trouvera sur internet énormément de comparatifs sur les frameworks PHP
    Oui justement, c'est ce que j'ai vu, c'est surtout la guerre entre Cake PHP et Zend à ce que j'ai vu !

    Dans tous les cas, que tu utilise un framework ou non, je te recommande Eclipse PDT pour tes développements PHP.
    J'ai tendance à privilégier Netbeans IDE !

    Pour un gain de performance significatif, sache que PHP 5 est environ 2x plus rapide que PHP 4 et que PHP 5.3 est 3x plus rapide que PHP 5.1 (je cherche actuellement ma source).
    Tout dépend des fonctions non ?

    Ensuite !

    Entre un site fait en procédural et un site full framework il y'a au moins un facteur 10 en perte de performance pour le framework.
    C'est bien ce que je voulais savoir, c'est parce qu'avec un framework on charge des fonctions qu'on ne va pas forcémment utiliser ?
    Mais le soucis du procédural, c'est qu'il faut coder correctement et utiliser les bonnes fonctions sinon c'est pas terrible niveau performance ?

    L'intêret ici du MVC, c'est par exemple de gérer les designs etc, c'est plus pratique je trouve, mais niveau performance ça change quelquechose ?


    Concernant mon projet, je ne sais pas si le framework est justement adapté ! Sauf si il est léger etc ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/06/2006, 11h33
  2. Langages POO avec template
    Par kot dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 05/05/2006, 12h23
  3. [MVC]Modélisation POO avec BD
    Par fremsoi dans le forum MVC
    Réponses: 1
    Dernier message: 08/11/2005, 13h53
  4. Copie d'un fichier sans montage avec Samba
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 5
    Dernier message: 14/07/2005, 11h31
  5. Appeler une API sans liaison avec une DLL
    Par mat.M dans le forum x86 32-bits / 64-bits
    Réponses: 10
    Dernier message: 13/07/2004, 02h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo