Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2011, 21h31   #1
Nouveau Membre du Club
 
Inscription : décembre 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 61
Points : 35
Points : 35
Envoyer un message via MSN à skanner
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.
skanner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 21h59   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
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 : 586
Points : 859
Points : 859
Citation:
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 )
Citation:
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....
Citation:
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é...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 22h19   #3
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
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
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 22h29   #4
Nouveau Membre du Club
 
Inscription : décembre 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 61
Points : 35
Points : 35
Envoyer un message via MSN à skanner
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é !
skanner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 07h08   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 708
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 708
Points : 3 278
Points : 3 278
Salut

Citation:
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]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 11h48   #6
Nouveau Membre du Club
 
Inscription : décembre 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 61
Points : 35
Points : 35
Envoyer un message via MSN à skanner
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.
skanner est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h52.


 
 
 
 
Partenaires

Hébergement Web