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 :

Exécuter plusieurs requêtes parallèlement


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Par défaut Exécuter plusieurs requêtes parallèlement
    Bonjour,

    J'ai un serveur php mysql. Et une application web dont les declencheurs appellent des scripts php via ajax. Tout ce passe bien, je peux me connecter à la bdd mysql via pdo, et mes script Ajax lance des script php et retourne des valeur json.

    je veux créér un dashbord dynamique, c'est a dire un ensemble de vue leger sur une seule pagem qui se rafraîchit toutes les 20s. J'ai donc des script JavaScript qui font des appels Ajax et récupérent les données et renseigne des champs via leur id.

    Le problème est que les différents script Ajax se font successivement et non en parallèle, c'est a dire que ces script font un appels Ajax, récupérent les données JSON, pendant ce temps les autres appels Ajax attendent. Hors je veux que chacun se lance et lit sa table puis affiche les données sans faire attendre les autres.

    En plus pendant que le dashboard se rafraîchit seul, je dois pouvoir faire des recherche sur une autre table, mais cette opération attends que toutes les opérations Ajax précédent soit terminé, donc ma requete Ajax tourne jusqu'à ce que les autres aient terminé.

    Comment faire de sorte à ce que je travail de manière fuilde sans attendre surtout ? j'ai tout essayé depuis 1 semaine. Svp de l'aide, merci.

    PS : je pensais au thread, mais vu que c'est une application web.
    PS: est ce une configuration supplementaire du serveur apache? ou des modules PHP? si oui merci de m'aider

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 626
    Par défaut
    utilisez vous des sessions dans le code php ?
    les sessions utilisent un fichier de verrou qui fait qu'une session php est ouverte seulement quand celle de l'autre script a été fermée.

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    La piste de Mathieu est la bonne.

    La solution est, pour chaque script, de libérer le verrou du fichier de session plus vite en fermant la session au plus vite. Ainsi les traitements parallèles pourront être lancés rapidement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
     
    session_start();
     
    // ... On fait ce qu'on a à faire avec la session
     
    if (!isset($_SESSION['user']['is_connected'])) {
        header('HTTP/1.0 403 Forbidden');
        exit;
    }
     
    // On ferme la session au plus vite
    session_write_close(); // Ferme la session, mais ne la détruit pas
     
    // Traitements longs...
     
    require_once __DIR__ . '/path/to/header.php'; // Inclusion de PDO
     
    $sql = 'SELECT ALL ...';
     
    // ...

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Par défaut
    oui j'utilise des session PHP. En fait l'application possede un page d'authentification, et quand le user et pass sont bon, une session est initiée et reste ouverte jusqu'a ce que l'utilisateur clique sur deconnecter.
    Merci à vous de prendre le temps de m'aider.

    Mais si je ferme la session, l'utilisatur retournera à la page d'authentification (j'ai ecrit mon script php ainsi, c'est un fichier qui test si un session est cree, avec une valeur donné, sinon affiche la page d'authentification).

    Mais je vais tenter le script ci-dessus, et enlever la redirection vers la page d'authentification pour voir deja.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Par défaut
    Ah desole j'avais pa bien lu, la fonction session_write_close(); ferme la session, mais ne la détruit pas, ok j'essaie en ce moment.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Par défaut
    Seb et Mathhieu, vous étiez ou depuis longtemps
    Vous avez identifié et resolu mon probleme en quelque posts, j'ai souffert pendant 1 semaine.
    Pause: svp expliquez moi SVP que je comprenne la logique de ce truc. Donc quand une session PHP est active, alors PDO aussi attend que cette session soit liberée?

    Merci les gas, vraiment merci.
    PS: je peux utiliser dans tous les cas ce session_write_close ou alors c'est juste avant les requete de base de données?

    AUSSI session_write_close DOIT TOUJOURS ETRE PLACE AVANT LA REQUETE SQL OU PEUT IMPORTE L'ENDROIT? (JE VAIS TESTER CA EN ATTENDANT VOTRE REPONSE)

    Je mettrais le sujet à resolu après que vous m'ayez eclairé encore.

    MERCIIIIIIIII

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

Discussions similaires

  1. Composant qui exécute plusieurs requêtes
    Par sinoun dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 10/06/2015, 15h13
  2. comment exécuter plusieurs requêtes ensemble avec Pentaho
    Par bfelicien2000 dans le forum Pentaho
    Réponses: 0
    Dernier message: 01/12/2010, 17h31
  3. Exécuter plusieurs requêtes à la suite
    Par FrenchFrogger dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 14/10/2008, 19h16
  4. [Oracle] Exécuter plusieurs requêtes (block) en PHP vers Oracle
    Par hshamsan dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/04/2008, 09h42
  5. Exécuter plusieurs requêtes en même temps
    Par k_boy dans le forum Bases de données
    Réponses: 9
    Dernier message: 21/02/2008, 12h51

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