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

PHP & Base de données Discussion :

Recharger une table temporaire lorsque qu'une connexion est persistante


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Billets dans le blog
    27
    Par défaut Recharger une table temporaire lorsque qu'une connexion est persistante
    Bonjour à tous

    Développant depuis quelques temps un CMS, je me heurte à un problème que même Google et ces forums n'ont pu résoudre... pour vous dire ! ^^

    Ce CMS, comme la plupart, utilise un certain nombre de modules, notamment pour ce qui est de la gestion des connexions, des erreurs et de la surveillance de la charge.
    Or, pour des raisons pratiques d'accès à la base, j'ai fais le choix il y a bien longtemps d'une connexion MySQL persistante... celle-ci se révèle payante à la longue, mais impossible alors que je dois impérativement passer par des tables temporaires, de mettre celles-ci "à jour". Lors de leur création...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "CREATE TEMPORARY TABLE Machin SELECT * FROM TRUC;"
    ... Mais je souhaite que celle-ci se mette à jour en temps voulu (une sorte UPDATE de ma table temporaire).
    J'ai essayé le DROP (sans succès), diverses combines hasardeuses (sans succès). Je me retrouve constamment avec les données temporaires. J'en suis rendu à surcharger aux variables de connexion de la classe concernée pour revenir à une connexion non-persistance.

    Une idée sur la méthode à suivre ?

    A savoir : je ne suis pas chez un hébergeur mais en local, sur un serveur Linux dédié.

    D'avance merci...

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 673
    Par défaut
    Citation Envoyé par Nothus Voir le message
    ... Mais je souhaite que celle-ci se mette à jour en temps voulu (une sorte UPDATE de ma table temporaire).
    je n'ai pas compris à quel moment elle doit se mettre à jour

  3. #3
    Membre Expert
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Billets dans le blog
    27
    Par défaut
    Merci de ta réponse Mathieu !

    1. Arrivée au site - ouverture d'une connexion MySQL persistante

    (... l'utilisateur se connecte, navigue sur le site, etc.)

    2. Va sur le service concerné, qui crée une table temporaire contenant des éléments précis du compte d'utilisation

    (... l'utilisateur continue sa navigation et change des informations dans la BDD)

    3. Et là problème lorsqu'il revient sur le service concerné : il faut que la table temporaire voit les informations mises à jour

    ... Si je passe par une table temporaire, c'est que les volumes de données sont importants pour la taille de mon petit serveur (quelques centaines de méga), et qu'il doit ensuite faire de multiples jointures.

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 673
    Par défaut
    Citation Envoyé par Nothus Voir le message
    2. Va sur le service concerné, qui crée une table temporaire contenant des éléments précis du compte d'utilisation
    tu fais quoi comme traitement à cette étape si la table existe encore ?
    tu es sur que la table est encore là même si tu utilises une connexion persistante ? normalement chaque nouvelle page devrait être une nouvelle connexion donc les tables temporaires ne devrait pas être conservées même avec une connexion persistante

  5. #5
    Membre Expert
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Billets dans le blog
    27
    Par défaut
    Arrivée sur la page :

    Création de l'index de la messagerie de l'utilisateur puis son affichage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QUERY1 :: CREATE TEMPORARY TABLE Boite_'.$id_proprietaire.' 
    SELECT Messagerie.id as id, date_envoi, date_lu, titre, message as contenu, COUNT(DISTINCT(id_destinataire)) as nbredestinataire 
    FROM Messagerie, Messagerie_Destinataires 
    WHERE Messagerie.id_proprietaire='.$id_proprietaire.' 
    AND Messagerie.id=Messagerie_Destinataires.id_message 
    GROUP BY Messagerie.id 
    ORDER BY date_envoi DESC, date_lu DESC;
    
    QUERY2 :: 'SELECT * FROM Boite_'.$id_proprietaire.';'
    (poursuite de la visite, changement dans la BDD, etc.)

    Pour les tests, chaque nouvelle page vu enregistre un message aléatoire. Lorsque je reviens sur la page, si je refais exactement ce qu'il y a plus haut, le résultat est le même... Or, pendant les tests sous PHPMyAdmin en local, il n'y avait pas de problème.

    Je n'utilise pourtant pas de proxy...

  6. #6
    Membre Expert
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Billets dans le blog
    27
    Par défaut
    Problème (bêtement) résolu en rajoutant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QUERY1 :: DROP TEMPORARY TABLE IF EXISTS Boite_'.$id_proprietaire.';
    ... Mais je reste circonspect : comment se fait-il que la table temporaire survive après la fin d'exécution du script ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/04/2010, 12h06
  2. [Modèle Relationnel] Faire une table par type ou une table des types ?
    Par jax54000 dans le forum Schéma
    Réponses: 12
    Dernier message: 18/11/2009, 11h43
  3. [MySQL] Créer une table actuelle à partir d'une table historique
    Par cleminute dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/10/2009, 14h35
  4. recupérer les info d'une table X pour alimenter une table Y
    Par lemerite dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/09/2008, 11h31
  5. Réponses: 1
    Dernier message: 12/04/2007, 17h08

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