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 :

Requête SQL non éxécutée mais qui renvoient TRUE [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Requête SQL non éxécutée mais qui renvoient TRUE
    Bonsoir tout le monde,

    Voilà j'ai un petit soucis actuellement sur plusieurs scripts PHP.
    Un script PHP qui contient plusieurs requêtes MySQL sur une base distante est éxécuté, seulement il arrive parfois que certaines de ces requêtes ne soient pas effectué sur la base distante bien que le script ne renvoi pas d'erreur, j'en déduit donc que chaque requête SQL renvoie TRUE, puisque la bonne éxécution de chacune d'entres elles est controlée.
    Pour ces requêtes, j'utilise un grand classique : la fonction mysql_query.
    Etant donné que la liaison entre le PC qui héberge et lance le script et la base de données distante est en 3G, et que cette connexion est plutôt capricieuse (nombreux Timeout + déconnexion).
    Je pense que certaines de mes requêtes sont mal éxécutées à cause de ça, qu'en pensez vous ?
    Ensuite, je me demande si de passer toutes les requêtes SQL en transactionnel ne réglerait pas le problème ?
    Ou sinon pensez vous que cela peut venir d'ailleurs, sachant que le même script qui est éxécuté sur la même base mais où cette fois la liaison entre les deux est une connexion ADSL plus stable, ne plante jamais ?

    Merci,

    Cordialement,

    BENOIT J.

  2. #2
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    Un script PHP qui contient plusieurs requêtes MySQL sur une base distante est exécuté, seulement il arrive parfois que certaines de ces requêtes ne soient pas effectué sur la base distante bien que le script ne renvoi pas d'erreur, j'en déduit donc que chaque requête SQL renvoie TRUE, puisque la bonne exécution de chacune d'entre elles est contrôlée.
    tu en déduis mais as tu fait un var_dump() dessus ?
    as tu le mysql.trace_mode d'activé ? (src stealth35 )
    Je pense que certaines de mes requêtes sont mal exécutées à cause de ça, qu'en pensez vous ?
    alors la... je ne pense pas que ce soit si volatile une requete mais bon....
    Ensuite, je me demande si de passer toutes les requêtes SQL en transactionnel ne réglerait pas le problème ?
    si tes requêtes dépendent les unes des autres ca peux garantir l'intégrité de ta base mais sauf qu'au lieu de quelques requêtes exécutées t'auras toutes tes requêtes d'exécutées ou pas, je ne crois pas que sa résoudra ton problème...
    Développeur informatique contrarié...

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    La requête sur ta bdd s'effectue sur le serveur et est donc indépendante de la qualité de ta liaison.
    Si ta liaison est mauvaise peut être que la requête au serveur n'aboutie pas et donc la requête à ta bdd ne se fait pas, ou alors elle se fait mais le retour d'information ne se fait pas.
    Des modifications de tes tables quand bien même elles seraient transactionnelles ne régleront pas le pb d'une mauvaise liaison entre le pc et le serveur distant.

    Ou peut-être que j'ai pas bien saisi ton pb

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bah je peux difficilement monitorer le phénomène sachant qu'il est très fugace, ne se produit que 2 ou 3 fois par jour (et encore ...) et que c'est chez un client ...
    Je pense qu'avec le transactionnel si aucune requête ne s'éxécute ça ne me foutra pas la merde, étant donné que rien ne sera modifié !

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Ensuite, je me demande si de passer toutes les requêtes SQL en transactionnel ne réglerait pas le problème ?
    J'ai tendance à dire oui et non.

    Le principal but d'une transaction c'est de se garantir que la Bdd conserve une cohérence au niveau des données.
    Si ces misent à jours qui se font que partiellement et débouchent sur de vrai incohérences et qu'après ça devient source de bug lorsqu'on exploite ces données, alors oui, mettre en place une transaction peu être utile voir même indispensable.

    Cependant, et si j'ai bien compris, ça pourra difficilement l'être totalement.
    Petit scénario juste pour exemple.
    1/ On appel une 1ère page et que ça se passe bien, toutes les requêtes correctement exécutées.
    2/ Un 2ème appel (même page ou autre page), un bug survient, la transaction annule le groupe de requêtes.
    3/ Un 3ème appel les requêtes se font correctement.

    Et bien dans cet exemple on obtient quand même une incohérence : Le 2ème groupe ne s'est quand même pas fait.
    Vois tu, faut voir quand même.

    A coté de ça, ce n'est pas n'importe quelle moteur de MySQL qui intègre les transactions, InnoDB pour le plus courant, et il est dit qu'il est plus lent que MyISAM.
    Vu que tu as déjà des timeout, là aussi il faut voir.


    Comme ça au felling, je dirais qu'il serait peut être bon de commencer par faire ces manip sur un réseau plus stable, comme l'ADSL comme tu l'as suggéré.
    Puis peut être aussi faudrait voir les heures ou tout ça se fait.
    De même d'évaluer la quantité des traitements, peut être est ce déjà limite limite, qui fait qu'une petite pointe de trafic fait que le serveur ne peut plus suivre.
    Faut voir.

    Tout ça n'est pas simple, faut bien l'avouer.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bon, merci pour vos réponses, je pense que le mieux c'est encore que je fasse un test grandeur nature, parce que j'ai quand même des doutes sur l'efficacité des transactions pour ce genre de cas.

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

Discussions similaires

  1. [SQL] Requête SQL non prise en compte
    Par Petit bateau dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/07/2007, 10h43
  2. Réponses: 1
    Dernier message: 03/05/2007, 11h21
  3. [MySQL] Requête qui ne s'exécute pas MAIS qui renvoie true pour mysql_query()
    Par francis13 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/05/2007, 03h31
  4. erreur de requête SQL avec ASP mais pas dans Access
    Par csszzen dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/03/2007, 09h07
  5. [ODBC] erreur SQL pour les unions qui renvoient vide
    Par fabriceMerc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/11/2003, 11h06

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