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 :

Garder une dataset d'une page a une autre


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Points : 464
    Points
    464
    Par défaut Garder une dataset d'une page a une autre
    est ce que c'est possible de garder une dataset d'une page a une autre sans faire executer la requette une deuxieme fois.
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $query = "SELECT * FROM ".$table." WHERE ".$where ;
    $dataset = mysql_query($query)	;
    $enr = mysql_fetch_array($dataset);

  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
    non, pas à ma connaissance

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 55
    Points
    55
    Par défaut
    Tu peux enregistrer le contenu de ton dataset dans un fichier.
    En quelques sortes, tu peux mettre en place un système personnel de cache des requetes ...

  4. #4
    Membre habitué Avatar de tony montana
    Profil pro
    Inscrit en
    Février 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 114
    Points : 136
    Points
    136
    Par défaut
    salut,
    Citation Envoyé par neby55
    Tu peux enregistrer le contenu de ton dataset dans un fichier.
    En quelques sortes, tu peux mettre en place un système personnel de cache des requetes ...
    ou au lieu de stocker ces infos dans un fichier, les mettre dans une variable de session (auquel cas le cache ne servira pas pour différents utilisateurs).
    A tester, mais tu peux peux-être/surement mettre directement la ressource retournée par mysql_query dans une variable de session.

  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
    Mais à la fin du script php ne ferme pas la connection ? du coup la ressource n'est plus valide

  6. #6
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Citation Envoyé par Mr N.
    Mais à la fin du script php ne ferme pas la connection ? du coup la ressource n'est plus valide
    il suffit d'utiliser mysql_pconnect

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 55
    Points
    55
    Par défaut
    A tester, mais tu peux peux-être/surement mettre directement la ressource retournée par mysql_query dans une variable de session
    Ca marchera je pense.

    Cependant, le problème de mettre le dataset en session est que le volume de tes données du dataset peut être supérieure au maximum autorisé (définit dans php.ini il me semble). Dans ce cas, la session saute ou perd une partie des données...

  8. #8
    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
    Je sais plus où est-ce que j'avais lu qu'il y avait des problèmes avec pconnect mais je saurais dire lesquels

  9. #9
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Ah ? si tu le dis.

    Pour ma part je n'ai jamais eu de soucis...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Mr N.
    Mais à la fin du script php ne ferme pas la connection ? du coup la ressource n'est plus valide
    Si tu utilise un Objet DB, tu as un objet de connexion et un objet de resultats. Ainsi, pas de problème résultats liés à la connexion.

    Comme Objet DB, je conseille ADODB...

  11. #11
    Membre habitué Avatar de tony montana
    Profil pro
    Inscrit en
    Février 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 114
    Points : 136
    Points
    136
    Par défaut
    Citation Envoyé par GregPeck
    Citation Envoyé par Mr N.
    Mais à la fin du script php ne ferme pas la connection ? du coup la ressource n'est plus valide
    il suffit d'utiliser mysql_pconnect
    je viens de tester, et effectivement la ressource n'est plus utilisable sur la seconde page après l'avoir mis dans une variable de session ... je pensais (à tort) que la ressource était utilisable sans avoir le lien avec la base de données encore établit.
    Il faut donc récupérer les infos de la ressource avec un(plusieurs) mysql_fetch_array , et celles ci peuvent elles être passées d'une page à l'autre en variable de session.

    J'ai testé avec mysql_pconnect, ca ne marchait pas non plus, mais n'ayant jamais utilisé ces connexions persistantes, je ne suis pas sur d'avoir tout fait dans les règles (j'ai simplement remplacé mon mysql_connect par mysql_pconnect).

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Mr N.
    Je sais plus où est-ce que j'avais lu qu'il y avait des problèmes avec pconnect mais je saurais dire lesquels
    Le problème des connexions persistantes est que, souvent, les processus sont mal gérés et donc rarement tués. Ainis, il peut y avoir 40 connexions persitantes ouvertes alors qu'une seule pouvait suffir.

    Les connexions persistantes sont la plupart du temps utilisées pour des sites à fort traffic et donc avec de nombreux accès à la base de données...

  13. #13
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Citation Envoyé par tony montana
    je ne suis pas sur d'avoir tout fait dans les règles (j'ai simplement remplacé mon mysql_connect par mysql_pconnect).
    A vrai dire, je ne maitrise pas non plus, mais il me semble bien que c'est la seule chose à faire...

  14. #14
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Pour info, en effet il faut utiliser les connexions persitantes avec parcimonie...

    Citation Envoyé par php.net
    Avertissement

    Il y a quelques autres limitations à ben garder en tête lorsque vous utilisez les connexions persistantes. L'une est que lorsque vous posez un verrou avec une connexion persistante, si le script ne peut libérer le verrou pour une raison quelconque, alors les autres scripts qui réutiliseront la connexion seront bloqué indéfiniment, et vous imposeront le redémarrage du serveur ou de la base de données. Une autre limitation est, lors de l'utilisation des transactions, un bloc de transaction non fermé sera prolongé au script suivant, s'il n'est pas fermé par le script initiateur. Dans les deux cas, vous pouvez utiliser la fonction register_shutdown_function() pour enregistrer une fonction simple de nettoyage, pour déverrouiller les tables, et annuler les transactions en cours. Mieux encore, évitez le problème entièrement en n'utilisant pas les connexions persistantes dans les scripts qui ont besoin de verrous ou de transactions. Vous pourrez toujours les utiliser ailleurs.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  2. Réponses: 3
    Dernier message: 14/08/2012, 10h24
  3. passer une variable d'un page a l'autre
    Par xunil2003 dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2010, 09h57
  4. Réponses: 7
    Dernier message: 11/01/2008, 00h11
  5. Réponses: 1
    Dernier message: 21/10/2007, 13h16

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