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 :

[Cookies] Les class sont elles recompilées lors de changement de page?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut [Cookies] Les class sont elles recompilées lors de changement de page?
    Bonjour à tous,

    Je souhaitais avoir un petit éclaircissement sur le mode OO de PHP.
    J'ai deux classes de bases dans mon app :

    - La class "appManager"
    1 qui gère l'initialisation de l'application en parsant un fichier xml de propriétés (load du dsn par exemple), création de la connection à la base mysql et gère les requêtes SQL, ainsi que le formatage des résultats.

    - La class "queryInitialisation"
    qui load un fichier xml contenant les requêtes SQL de l'application dans un DOMdocument sur lequel j'effectue des requêtes xpath pour obtenir une requête dont j'ai besoin.

    et des class correspondant par exemple à une table de ma db.

    Autrement dit, pour loader une commande je dois faire les étapes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $commande = new commande();
    $commande->loadCommandeByID(5);
    La méthode loadCommandeByID($commande_id) va effectuer une requête xpath sur le DOMDocument de la class "queryInitialisation". Ce dernier la retourne et je la passe à l'objet "appManager" qui l'effectue me retourne un résultat que la méthode "loadCommandeByID" utilise pour remplir les variables de l'objet.

    Mettons que l'utilisateur change de page sur le site web. La nouvelle page a également besoin des deux classes de bases "appManager" et "queryInitialisation". Ma question est la suivante :
    Le parsing des deux fichiers xml de base va-t-il être fait de nouveau ou le "moteur" de php le garde en mémoire ?


    - Si les fichiers doivent être parser à nouveau comment l'éviter ? Comment rendre persistent les deux objets qui sont la base de mon app à la manière d'un servlet JAVA ?

    Merci d'avance pour vos réponses.

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Oui le code est recompilé pour chaque page sauf si tu utilise un système de cache.
    Les objets sont détruits une fois que le script courant est terminé. Donc oui tu dois recharger à chaque fois ton fichier xml.
    Pour la persistence de ton objet, tu peux utiliser les sessions => à l'appel de la page suivante, tu retrouve ton objet comme tu l'avais laissé lors de la page précédente.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Merci pour ta réponse.

    Et au niveau sécurité ? cela amène-t-il des risques de stocker dans tes variables de sessions les identifiants de connexion à la base, ainsi que l'ensemble des requêtes du sités ?

    Si j'utilise ces deux classes de bases et la class "commande" dont j'ai parlé dans mon premier poste non par pour des pages web, mais pour des services web consommé par un client riche, existe-t-il une manière d'optimiser tout cela ?
    Car à chaque appel de mon service web pour afficher une commande, php va créer une connexion à la base parser les fichiers et éxécuter la requêtes.
    Et ce n'est pas très optimal !

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Si j'utilise des sessions qu'au moins un utilisateur est connecté (donc déjà une connexion à la base de créée) et qu'une autre personne se connecte sur mon site, PHP utilise-t-il la connexion déjà créée pour ce nouvel utilisateur, ou en recréée t-il une nouvelle ?

    Merci d'avance.

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par nickola
    Si j'utilise des sessions qu'au moins un utilisateur est connecté (donc déjà une connexion à la base de créée) et qu'une autre personne se connecte sur mon site, PHP utilise-t-il la connexion déjà créée pour ce nouvel utilisateur, ou en recréée t-il une nouvelle ?
    Uine nouvelle

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par nickola
    Merci pour ta réponse.

    Et au niveau sécurité ? cela amène-t-il des risques de stocker dans tes variables de sessions les identifiants de connexion à la base, ainsi que l'ensemble des requêtes du sités ?
    Si ton serveur est vérolé est que tu stockes les sessions dans des fichiers, alors oui, un utilisateur _pourrait_ lire les infos contenues dans les sessions. La question est à se poser seulement si tu es en mutualisé, et encore, si ton hébergeur est sérieux tu peux lui faire confiance.

    Citation Envoyé par nickola
    Si j'utilise ces deux classes de bases et la class "commande" dont j'ai parlé dans mon premier poste non par pour des pages web, mais pour des services web consommé par un client riche, existe-t-il une manière d'optimiser tout cela ?
    Car à chaque appel de mon service web pour afficher une commande, php va créer une connexion à la base parser les fichiers et éxécuter la requêtes.
    Et ce n'est pas très optimal !
    Pourquoi faire la différence entre un service web et une page web ? si tu arrives à cacher pour l'un pourquoi ne pas faire pour l'autre ?
    Il te suffit d'implémenter un système de cache et comme ça tu n'as pas à faire des requêtes à chaque fois...

  7. #7
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Je vais essayer de degrossir tout ça :
    1) à chaque "page", le code PHP est recompilé. Oui, systématiquement.
    2) à chaque "page", dans ton cas il devra également "reparser" tous tes fichiers XML
    3) à chaque "page", PHP se reconnectera à la base de données.
    4) le problème du client riche, c'est que généralement il ne gère pas les fonctions HTTP aussi bien qu'un navigateur Web complet. Par exemple s'il ne gère pas les cookies, tu n'auras sûrement pas de sessions... de même, il y a peu de chance pour qu'il gère un cache de fichier... tout comme la compression des transferts... et bien d'autres petits mécanismes qui "accélèrent" la navigation.

    Des solutions ?
    1) on peut utiliser un "cache d'opcode" (système qui force PHP a conserver en mémoire le résultat de la compilation d'un script) : eAccelerator, Zend Optimizer, etc.
    2) là rien n'est proposé en standard, mais eAccelerator fournit par exemple des fonctions permettant à tes scripts de stocker des objets en mémoire.
    3) de ce coté du peux utiliser les connexions persistantes... à condition d'avoir un serveur dédié et d'en avoir réellement l'utilité. En mutualisé il y a de grandes chances pour que cela ne fasse qu'empirer les choses.
    4) utiliser une librairie "évoluée" (cURL, ou l'API d'IE par exemple)
    Google is watching you !

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup pour tes réponses.
    Aurais-tu un système de cache particulier à me conseiller ?

  9. #9
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Il faut lire la doc zend à ce sujet mais
    les classes ne sont pas sysématiquement recompilé.
    le moteur zend utilise un cache interne.

    par contre li ne faut pas compter sur le fait que les classe déjà compilé son en cache car une classe dans le cache interne de la machine virtuelle zend reste locale à cette machine et le seerveur appache peut en lancer plusieurs.

    pour finir les optimisation du moteur zend fond que des portion entière de code ne sont pas compilé tant que leur usage n'est pas demandé.
    ce peut très bien être le cas d'une méthode d'une classe.

    lorsque tu charge ta classe sa définition est compilé. mais pas ses méthodes.
    elle le seront au besoin.

    A+JYT

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Merci à tous pour vos lumières.
    Je vais regarder du côté des moteurs de caches.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/03/2007, 15h46
  2. Quand les ressources sont elles associées ?
    Par poulette3000 dans le forum Windows
    Réponses: 1
    Dernier message: 25/08/2006, 22h57
  3. Réponses: 11
    Dernier message: 06/06/2006, 14h04
  4. Réponses: 3
    Dernier message: 01/05/2006, 14h09
  5. Réponses: 2
    Dernier message: 29/10/2003, 23h47

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