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

Zend Framework PHP Discussion :

Quelle stratégie adopter pour gérer la persistence de requêtes préparées


Sujet :

Zend Framework PHP

  1. #1
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut Quelle stratégie adopter pour gérer la persistence de requêtes préparées
    Salut,

    Je me pose aujourd'hui une question liées au performances d'une application web. J'ai un grand nombre de requêtes SQL qui sont exécutées à chaque appel de l'application, notamment dans le bootstrap ou les plugins Zend. Aux paramètres SQL près, ce sont les mêmes requêtes, toutes les conditions sont réunies pour qu'il soit pertinent de les préparer.
    J'aimerais pouvoir stocker d'une requête HTTP à une autre plusieurs requêtes préparées pour gagner un peu en temps d'exécution les prochaines fois.

    Où stocker de tels objets pour qu'ils persistent côté serveur et que je puisse les retrouver ?
    J'aurais bien voulu les stocker dans des membres statiques de mes classes, mais bien sûr tout est remis à zéro entre 2 appels HTTP.

    Comment faites-vous ?

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Si ces objets sont propres à l'utilisateur (du genre données propres à son id) tu eux stocker les objets en session , tant qu'il n'y a pas de ressources (connexion réseau,bdd,image) dans ces objets.

    Si ce sont des objets plus générique opte plutôt pour une cache en mémoire du genre APC ou memcache
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    Et s'il s'agit justement d'objets de type ressource ? Peut-on les mettre quelque part en cache ?

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Faut essayer dans un système de cache , mais une ressource n'est pas sérialisable donc ca risque de coincer.

    En session en tout cas c'est pas possible.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Quand tu dis que tes requêtes sont exécutées à chaque appel, est ce que tu sous-entends que dans un même appel elles sont exécutées plusieurs fois ?
    Si oui, alors les préparer est utile.
    Par contre si elles ne sont exécutées à chaque appel qu'une seule fois, les préparer est une perte de perf colossale.
    J'ai eu ce problème sur une de mes appli. J'ai listé les requêtes qui étaient exécutées seulement une fois à chaque appel et je suis passé par quote() au lieu de prepare() et le gain a été immédiat de l'ordre de 20 à 30% (ce qui n'est pas négligeable)

    Après pour le cache des ressources, c'est chaud. Pour les images, tu peux les cacher en jouant sur les header(), quant aux autres types de ressources, c'est ...

Discussions similaires

  1. Réponses: 14
    Dernier message: 18/04/2015, 09h15
  2. Quelle stratégie adopter pour ma recherche ?
    Par Invité dans le forum Requêtes
    Réponses: 4
    Dernier message: 29/06/2010, 22h27
  3. Quelle librairie adopter pour faire un jeu par navigateur ?
    Par Meardon dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 22/10/2008, 17h39
  4. [MySQL] Base de données : stratégie à adopter pour un moteur de recherche
    Par yohan0262 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 04/06/2007, 11h35
  5. [EJB2.1 Entity] comment configurer un conteneur EJb pour gérer la persistance des CMP
    Par berrehouma dans le forum Java EE
    Réponses: 1
    Dernier message: 06/04/2007, 10h08

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