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 :

Chargement asynchrone 2 fichiers php-db2 (JSON)


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Dataminer
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Dataminer

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Chargement asynchrone 2 fichiers php-db2 (JSON)
    Bonjour à tous,

    Je me trouve face à un problème qui me semble étrange pour le moment.

    J'ai une page html avec javascript qui charge dynamiquement 2 tableaux ($.getJSON) .
    Les données pour ces tableaux sont attendus au format JSON et générées par un fichier php qui effectue les requêtes db2 (db2_prepare, db2_execute) pour récupérer les données nécessaires.

    Lorsque j'exécute un chargement dynamique, aucun problème.
    Lorsque j'exécute deux chargements dynamique avec un intervalle de temps suffisant, aucun problème.

    Lorsque j'exécute les deux chargements de manière asynchrone, j'ai parfois un problème. En effet, j'ai déjà eu les comportements suivants:
    • Aucun problème (cas idéal)
    • Premier fichier correct, deuxième avec des erreurs
    • Premier fichier avec des erreurs, deuxième correct


    J'ai au départ pensé à un souci au niveau de mon javascript, mais apparement, c'est vraiment la réponse du serveur php qui pose problème.
    J'obtiens les erreurs suivantes:

    • Warning: db2_fetch_assoc(): Column information cannot be retrieved in c:\file.php on line 113
    • Notice: Undefined variable: title in c:\file.php on line 126
    • Warning: db2_execute(): More parameters bound than present in c:\file.php on line 140
    • Warning: db2_execute(): Parameters not bound in c:\file.php on line 140
    • Warning: db2_fetch_assoc(): Column information cannot be retrieved in c:\file.php on line 142
    • Warning: db2_execute(): More parameters bound than present in c:\file.php on line 157
    • Warning: db2_execute(): Parameters not bound in c:\file.php on line 157
    • Warning: db2_fetch_assoc(): Column information cannot be retrieved in c:\file.php on line 159


    Ces erreurs me semblent illogiques et effectivement, si je réexécute le fichier php, tout se passe sans problème.

    Du coup je me demande si c'est lié à la parallélisation du processus (ce qui semble être le cas), mais pourquoi?
    Est-ce que l'un de vous aurait une idée de solution ou même une piste parce que je sèche?

    Merci d'avance

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Quelques pistes "lock des tables SQL" donc pister les logs sql, comme php et apache, il y a erreurs c'est certain, mais vu les accès direct à ta db il faut parfois utiliser le cache pour soulager les accès db surtout pour tout ce qui concerne les vues les plus lourde en données public (SELECT ... ).
    Citation Envoyé par bestsiena Voir le message
    Bonjour à tous,

    Je me trouve face à un problème qui me semble étrange pour le moment.

    J'ai une page html avec javascript qui charge dynamiquement 2 tableaux ($.getJSON) .
    Les données pour ces tableaux sont attendus au format JSON et générées par un fichier php qui effectue les requêtes db2 (db2_prepare, db2_execute) pour récupérer les données nécessaires.

    Lorsque j'exécute un chargement dynamique, aucun problème.
    Lorsque j'exécute deux chargements dynamique avec un intervalle de temps suffisant, aucun problème.

    Lorsque j'exécute les deux chargements de manière asynchrone, j'ai parfois un problème. En effet, j'ai déjà eu les comportements suivants:
    • Aucun problème (cas idéal)
    • Premier fichier correct, deuxième avec des erreurs
    • Premier fichier avec des erreurs, deuxième correct


    J'ai au départ pensé à un souci au niveau de mon javascript, mais apparement, c'est vraiment la réponse du serveur php qui pose problème.
    J'obtiens les erreurs suivantes:

    • Warning: db2_fetch_assoc(): Column information cannot be retrieved in c:\file.php on line 113
    • Notice: Undefined variable: title in c:\file.php on line 126
    • Warning: db2_execute(): More parameters bound than present in c:\file.php on line 140
    • Warning: db2_execute(): Parameters not bound in c:\file.php on line 140
    • Warning: db2_fetch_assoc(): Column information cannot be retrieved in c:\file.php on line 142
    • Warning: db2_execute(): More parameters bound than present in c:\file.php on line 157
    • Warning: db2_execute(): Parameters not bound in c:\file.php on line 157
    • Warning: db2_fetch_assoc(): Column information cannot be retrieved in c:\file.php on line 159


    Ces erreurs me semblent illogiques et effectivement, si je réexécute le fichier php, tout se passe sans problème.

    Du coup je me demande si c'est lié à la parallélisation du processus (ce qui semble être le cas), mais pourquoi?
    Est-ce que l'un de vous aurait une idée de solution ou même une piste parce que je sèche?

    Merci d'avance

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Dataminer
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Dataminer

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour Headmax,

    Merci pour ta réponse.
    Je dois peut-être donner plus de contexte. Un des problèmes est que la base de données est une base de données d'une application externe à mon système. Je dois développer un accès temps-réel pour visualiser certaines infos.
    A moins que je ne me trompe, LOCK table aurait un impact sur l'application externe ce que je ne peux pas me permettre. Et l'idée d'une cache DB me semble incompatible avec l'idée de vue temps-réel.

    Pour le reste, je vais approfondir la question des logs. Ce que j'ai pu apercevoir depuis hier, c'est que même lorsqu'un warning apparaît, j'obtiens tout de même une partie des données.

    Je charge maintenant 6 requêtes différentes et j'ai le même genre de soucis. Parfois tout est correct, parfois 1 JSON (plus rarement 2) contiennent les warnings.

    Un collègue a émis l'hypothèse que je perdais parfois la connexion avec la DB durant la requête (ce qui expliquerait la non-répétabilité du problème).
    Comme solution temporaire, je vais mettre en place un rechargement du JSON contenant des erreurs. Cela aura un impact sur la performance temporelle, mais au moins les données seront présentes (mieux vaut tard que jamais).

    Je vous tiens au courant et je reste ouvert à toutes propositions

  4. #4
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    tu peux contrôler ton erreur :

    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
     
    //ici tu controle pour ce script tout les erreurs même les warning attention bien configurer ton php.ini  (ini_set)
    set_error_handler(function($errno, $errstr, $errfile, $errline, array $errcontext) {
        // error was suppressed with the @-operator
        if (0 === error_reporting()) {
            return false;
        }
     
        throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
    });
    try{
       myfunction();
    }catch(Exception $e){
          echo json_encode($e->getMessage()); //selon ce retour au niveau js cette situation impliquera une récursion de l'appel pour exécuter la function qui a échoué...
    }
    gl

Discussions similaires

  1. [UI] [autocomplete] Requête sur fichier PHP to JSON
    Par Aoernis dans le forum jQuery
    Réponses: 3
    Dernier message: 07/06/2013, 22h03
  2. [AJAX] Upload ou envoyer des fichiers à PHP via JSON
    Par mesken dans le forum jQuery
    Réponses: 7
    Dernier message: 06/06/2013, 16h36
  3. Réponses: 2
    Dernier message: 19/06/2009, 14h21
  4. [POO] format json format de fichier .php
    Par phaedon dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/10/2008, 16h20
  5. Réponses: 5
    Dernier message: 02/02/2007, 15h53

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