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

CodeIgniter PHP Discussion :

PHP vs Framework


Sujet :

CodeIgniter PHP

  1. #1
    Membre confirmé Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Par défaut PHP vs Framework
    Bonjour à toutes et à tous,

    Permettez moi de vous exposer mon problème.
    Venant du Java, j'ai une petite connaissance de la POO et du développement MVC sous framework.
    Je dois maintenant développer un soft qui avait été fait en j2ee, mais sous php (que je ne connais pas bien).

    Du coup, je m'interroge sur l'utilisation ou non d'un framework, en l'occurence le choix s'est porté sur CodeIgnition, pour ses bons retour qu'on peut lire sur internet, sur sa petite taille.

    Toutefois, je m'interroge sur l'utilité d'un framework dans mon cas.
    Je suis tout seul sur le projet et seul et unique développeur... donc pas de travail d'équipe.
    Je peux coder proprement sans framework ou comme un porc avec un framework.

    Mon projet n'est pas une application de e-commerce, ou quelque chose de simple, mais une application scientifique client serveur avec des calculs très lourds et une manipulation de grosses quantités de données.

    Du coup alors que sous java, l'utilisation d'un framework, permet que le cycle de vie de l'objet est géré par le framework, et du coup cela optimise l'utilisation mémoire et minimise les fuites.

    J'ai bien lu:
    http://www.developpez.net/forums/d46...rk-vs-symfony/
    http://www.developpez.net/forums/f23...es-frameworks/

    mais je n'ai pas réellement trouvé de réponse à mes interrogations...

    Par exemple j'ai fait un test tout con avec CodeIgniter:
    un model qui ramène le résultat d'une requête énorme au controller et l'envoie à la vue qui affiche le résultat...
    Or ce qui est ramené est un objet, et l'objet est envoyé... donc il est en mémoire.
    Et comme le php.ini limite basiquement la consommation mémoire, au bout d'un moment si mon résultat est trop gros ça pète...

    Si je fais la même chose en php, j'ouvre une connection, j'exécute la requête, fetch le résultat et écrit dans ma page... je me rends compte qu'il n'y a pas de mémoire utilisée.
    Les données fetchées sont directement écrite.

    Du coup je me demande si un framework c'est si bien que ça?

    Comment le framework gère les objets qu'il transmet? Comment, à quel moment réalloue-t-il la mémoire des objets une fois utilisés?

    Bref, dans mon cas
    - pas d'équipe de développement
    - méconnaissance des framework php (donc obligé d'apprendre à les utiliser)
    - application complexe avec des gros calculs sur de gros volumes de données et donc grosse consommation de mémoire si objet en mémoire

    Est-ce utile d'utiliser un framework?
    Que peut m'apporter ce framework concrêtement?

    Personnellement je n'arrive pas à voir l'utilité de CodeIgniter pour mon application, vu que:
    - la gestion de l'identification est particulière et ne peux pas utiliser le Helper proposé
    - le formulaire est très complexe et peut difficilement être fait par le Helper
    - les autres Helper ne sont d'aucune aide

    J'ai de sérieux doutes quand à l'optimisation de la mémoire et de l'utilisation des objets (surtout destruction et réallocation).

    Et je crois le pire de tout...

    J'ai passé une journée entière à installer et faire fonctionner CodeIgniter 2.1.1 tout simplement car le framework comportait une erreur dans un des fichiers que j'utilisais
    system/database/drivers/oci8/oci8_result.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function num_rows()
    {
    	if ($this->num_rows === 0 && count($this->result_array()) > 0)
    	{
    		$this->num_rows = count($this->result_array());
    		@oci_execute($this->stmt_id);
    		if ($this->curs_id)
    		{
    			@oci_execute($this->curs_id);
    		}
    	}
    	return $rowcount;
    }
    $rowcount; n'existe pas et n'est pas instancié et il faut remplacer par "$this->num_rows;"

    L'utilisation d'un framework implique de faire confiance au code, et de telles erreurs, peuvent couter beaucoup de temps en développement surtout si on ne connait pas bien le PHP...

    Sans me conseiller votre framework, mais en étant tout à fait honnête et le plus objectif possible, me conseilleriez vous l'utilisation d'un framework? Ou au contraire de ne pas utiliser de framework?
    Et sinon quel framework me conseilleriez vous et pourquoi, à savoir, quelle brique du framework pourrais-je avoir l'utilité?

    Merci d'avance pour votre aide et vos conseils...

  2. #2
    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 : 40
    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
    Je dois maintenant développer un soft qui avait été fait en j2ee, mais sous php (que je ne connais pas bien).
    Pour moi celà suffit à répondre : pas de framework.

    Avec une faible connaissance de PHP il va falloir évidemment te taper l'apprentissage du framework et tu risque par dessus le marché de te retrouver coincer sur des problèmes qu'une connaisance de php plus pointu aurait probablement évité.

    D'un autre coté venant du monde Java tu ne serais je pense pas dépaysé par symfony2.

    L'idée serait peut être d'opter pour un microframework / libraire qui t'offre les outils minimaux pour par exemple mettre en place simplement un pattern MVC sans pour autant ralentir ton application à grand coup de couche d'abstraction, ORM et autres joyeusetés.

    J'ai de sérieux doutes quand à l'optimisation de la mémoire et de l'utilisation des objets (surtout destruction et réallocation).
    Même principe qu'en JAVA l'objet est détruit à la fin du script et/ou quand le grabage collector passe.
    Donc si je dis pas de connerie $monObjet = null; détruira la référence mais pas forcément les données en mémoire.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Par défaut
    Personnellement je n'arrive pas à voir l'utilité de CodeIgniter pour mon application, vu que:
    - la gestion de l'identification est particulière et ne peux pas utiliser le Helper proposé
    - le formulaire est très complexe et peut difficilement être fait par le Helper
    - les autres Helper ne sont d'aucune aide
    J'ai un peu de mal à te comprendre, codeigniter rassemble pas mal d'outils qui fonctionne très bien, et je ne vois pas en quoi tu as des problèmes, j'ai l'impression que tu as peu être du mal à le faire fonctionner. Et que l'erreur ne viens pas de CI

    La gestion de l'identification est ultra simple tout comme l'utilisation des formulaires, ce qui n’empêche en rien de créer une application complexe... l'utilisation de codeigniter ce rapproche plus de l'utilisation du php en brut, deplus c'est le framework le moins contraignant de tous...

    Pour ce qui est des frameworks, si tu n'arrive pas à utiliser celui-ci tu auras surement beaucoup plus de mal avec les autres qui sont bien plus complexe...

    Pourquoi l'utiliser, comme tous frameworks, il rassemble les basics pour la création d'une application web, les librairies 'database', 'session', 'form_validation', 'email' etc... , les helpers 'form', 'url', 'text' etc... sont bien pratiques...

    Si tu as bien charger le helper database dans ta config je ne vois pas pourquoi tu aurais une erreur cependant je ne suis pas sous oracle mais sous mysql...
    D’ailleurs ne serais-ce pas plus judicieux d'utiliser Mysql? (pour du 100% open source)

    Si cela peu t'aider tu as de bon tuto video pour CI2 sur:
    http://simpledev.fr/
    Ou un frameworks plus complets que j'affectionne aussi mais avec 10fois plus de contrainte, Cakephp2.
    Pour les usines à gaz comme symphony ou zend, travaillant seul, cela devient trop contraignant et trop complexe pour moi, je laisse ça aux grands groupes

  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 : 40
    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
    Si tu as bien charger le helper database dans ta config je ne vois pas pourquoi tu aurais une erreur cependant je ne suis pas sous oracle mais sous mysql...
    D’ailleurs ne serais-ce pas plus judicieux d'utiliser Mysql? (pour du 100% open source)
    T'imagines bien que si il as des données sous Oracle (et donc qu'il payes les licences qui vont avec) c'est pas juste pour dire "t'as vu j'utilise oracle"

    Le pattern activeRecord utiliser par codeigniter esttrès pratique mais il est possible que dans son cas (gros dataset) il ralentissent trop les traitement et finalement n'apporte pas grand chose.

    Citation Envoyé par gojira
    Et comme le php.ini limite basiquement la consommation mémoire, au bout d'un moment si mon résultat est trop gros ça pète...
    Le traitement est long où c'est juste la mémoire qui te bloque ? Parce que si c'est juste une histoire de mémoire faut pas hésiter à monter si tu as le serveur qui le permet.

    Citation Envoyé par gojira
    J'ai passé une journée entière à installer et faire fonctionner CodeIgniter 2.1.1 tout simplement car le framework comportait une erreur dans un des fichiers que j'utilisais
    system/database/drivers/oci8/oci8_result.php
    perso j'ai jamais eu très confiance en codeigniter. Son code mélange de php5 et php4 fait pas très sérieux je trouve.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Par défaut
    T'imagines bien que si il as des données sous Oracle (et donc qu'il payes les licences qui vont avec) c'est pas juste pour dire "t'as vu j'utilise oracle"
    Je me doute bien mais tant qu'a faire une migration sur de l'open source, le faire complètement pour pas payer à vie Et de l'open source et toujours plus facile a vendre (pas surcoût de licence), à transférer (plus d’hébergement php/mysql), mais bon ceci et une autre histoire

    Puis pour les mélanges Php 4-5, CI 3 devrait être en RC d'ici peu et je pense qu'un gros ménage aura été fait car je pense qu'il flippe de se faire voler la vedette par FuelPhp... enfin on vera
    Pour le moment CI2 ne me pose pas de soucie, donc ça va

  6. #6
    Membre confirmé Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Par défaut
    pour répondre à la question de grunk
    Citation Envoyé par grunk Voir le message
    Le traitement est long où c'est juste la mémoire qui te bloque ? Parce que si c'est juste une histoire de mémoire faut pas hésiter à monter si tu as le serveur qui le permet.
    C'est la mémoire qui bloque, ça pète entre 1 millions d'info et 1 millions cinq, difficile de monter plus le serveur apache après un certain seuil... d'ailleurs y a-t-il une limite?

    Un grand merci à tous pour m'avoir aiguillé sur le choix du framework.

    Toutefois, avant de mettre le tag résolu, j'ai une question dû justement au framework

    en tant normal lorsque je parcours une requête, je l'écris directement sur la page... chargement en mémoire: 0

    Or via un framework, j'écris un objet ou un Array que je transmets au controller qui le transmet à la vue. Donc manipulation d'un objet qui peut-être plus ou moins adipeux.

    Du coup à ce niveau l'utilisation d'un framework est pénalisante, même si la durée de vie de l'objet est courte.

    Exemple je veux créer un fichier Excel en PHP (avec PHPExcel). Je construis l'objet en lui passant un objet de résultat... mais avant que tout ne soit écrit, que le fichier ait été construit sur le serveur et disponible au téléchargement, j'ai deux gros objets en mémoire qui prennent une place qui n'existerait pas si je passais directement par l'écriture d'un stream sans manipulation d'un objet fini...

    Qu'en pensez vous?

    Avez vous en tant que développeur PHP été soumis à ces problèmes de charge mémoire d'objets dus à la conception MVC du framework? Si oui comment les avez vous contourné?

    (pour info lorsque je traite des tableau de résultat j'ai un ordre de grandeur de 1 millions de CLOB sous Oracle). Donc la manipulation d'objet en persistance, est pour ainsi dire soumise à caution.

    Encore un grand merci à tous pour votre participation dans ce sujet et pour avoir orienté mon choix.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Citation Envoyé par gojira Voir le message
    C'est la mémoire qui bloque, ça pète entre 1 millions d'info et 1 millions cinq, difficile de monter plus le serveur apache après un certain seuil... d'ailleurs y a-t-il une limite?

    (...)

    Avez vous en tant que développeur PHP été soumis à ces problèmes de charge mémoire d'objets dus à la conception MVC du framework? Si oui comment les avez vous contourné?

    (pour info lorsque je traite des tableau de résultat j'ai un ordre de grandeur de 1 millions de CLOB sous Oracle). Donc la manipulation d'objet en persistance, est pour ainsi dire soumise à caution.
    Bonjour Gojira,

    J'ai eu une fois ce genre de soucis lors d'un projet utilisant Symfony 1.4 ou je devais créer une sorte d'index de page web. Le hic c'est que le nombre d'objet montait tres vite.

    Deux astuces que j'ai utilisé pour réduire mon empreinte mémoire:
    - Faire en sorte que l'ORM retourne les résultats sous forme d'un array plutot que sous forme d'objets.
    - Ne pas recuperer tous les resultats d'un seul coup: recuperer les X premier resultats, les traiter, et ainsi de suite.

    En espérant avoir pu t'aider.

    Cordialement, Leward.

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 505
    Par défaut
    Citation Envoyé par gojira Voir le message

    C'est la mémoire qui bloque, ça pète entre 1 millions d'info et 1 millions cinq, difficile de monter plus le serveur apache après un certain seuil... d'ailleurs y a-t-il une limite?
    En même temps mettre 1.500.000 éléments dans un tableau, est cela à vraiment un sens, peut-être devrais-tu traiter tes données autrement, avec Oracle notament.

    Citation Envoyé par gojira Voir le message
    Un grand merci à tous pour m'avoir aiguillé sur le choix du framework.

    Toutefois, avant de mettre le tag résolu, j'ai une question dû justement au framework

    en tant normal lorsque je parcours une requête, je l'écris directement sur la page... chargement en mémoire: 0

    Or via un framework, j'écris un objet ou un Array que je transmets au controller qui le transmet à la vue. Donc manipulation d'un objet qui peut-être plus ou moins adipeux.

    Du coup à ce niveau l'utilisation d'un framework est pénalisante, même si la durée de vie de l'objet est courte.
    De nouveaux, avant d'arriver à la vue tes données sont traité donc tu ne fais que de l'affichage....regarde au niveau de la SPL, tu auras des outils plus rapide, mais plus restrictif.

    Citation Envoyé par gojira Voir le message
    Exemple je veux créer un fichier Excel en PHP (avec PHPExcel). Je construis l'objet en lui passant un objet de résultat... mais avant que tout ne soit écrit, que le fichier ait été construit sur le serveur et disponible au téléchargement, j'ai deux gros objets en mémoire qui prennent une place qui n'existerait pas si je passais directement par l'écriture d'un stream sans manipulation d'un objet fini...
    En plus PHPExcel est très très très lourd en consommation mémoire

    Citation Envoyé par gojira Voir le message
    Qu'en pensez vous?

    Avez vous en tant que développeur PHP été soumis à ces problèmes de charge mémoire d'objets dus à la conception MVC du framework? Si oui comment les avez vous contourné?
    Perso, déjà il faut penser PHP5.4, il y a un meilleur garbage collector.
    Le framework n'a que très peu d'importance, c'est la couche MVC qui est intéressante.

    Perso j'aime bien CI, mais aussi Hoa, FuelPHP, ZF et pour un micro framework je penserais Axiom (sur ce site même).

    Il te faut oublier tout ce qui est ORM, beaucoup trop lourd dans ton cas, rien ne vaut une bonne requête SQL, voire un trigger.

    Pour Excel, il existe des solutions plus légère base sur la lib C libXL.

Discussions similaires

  1. Certification php zend framework
    Par LeMafiozo dans le forum Certifications
    Réponses: 5
    Dernier message: 26/05/2010, 20h29
  2. Créer une API sur la base du PHP (Zend Framework)
    Par Jonathan.b dans le forum Langage
    Réponses: 3
    Dernier message: 07/01/2009, 11h15
  3. Cron: executer un script php avec framework
    Par thibaut06 dans le forum Administration système
    Réponses: 2
    Dernier message: 01/05/2008, 14h55

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