[PHP MYSQL] Synchronisation des requêtes

  • Auteur de la discussion Auteur de la discussion sietjp
  • Date de début Date de début
WRInaute occasionnel
Bonjour,
Il y a un truc qui me turlupine depuis quelques jours et je ne trouve pas la réponse.

Est ce que pendant l'exécution d'un script PHP faisant des requêtes à la base MYSQL peut être interrompu par l'exéction d'un autre script PHP faisant des requêtes à la même base MYSQL?
Cela voudrait dire qu'une requête exécutée en début de script ne donnerait pas forcément le même résultat si elle est exécutée en fin de script (dans le cas un autre script a modifié la table concernée entre temps).

Dites moi que c'est pas possible hein?
 
Nouveau WRInaute
Biensurs que non, en général, tu as 10 conections simultanées autorisé .... si la personne qui arrive est la 11, sa ne coupe rien, elle aura juste droit à une erreur PHP, Too Many Connections ;)
 
WRInaute occasionnel
hmm, réponse de tête (donc soumise à corrections)
il me semble qu'il existe un système de file d'attente des requêtes SQL, mais théoriquement, il est possible que le cas que tu décris arrive...

SQL 1 (Script 1): Lecture données
SQL 2 (Script 2): Update données
SQL 3 (Script 1): Lecture données

il est théoriquement possible, je pense, que SQL 1 et SQL 3 ne renvoient pas les mêmes données...
("please don't shoot the messenger", comme dirait l'autre)
 
WRInaute occasionnel
Si ce que tu dis est vrai, Didier_S, c'est vraiment une mauvaise nouvelle. Je suis en train de réaliser un noueau site communautaire avec des locks pour qu'il ne puisse pas y avoir d'édition concurrente et là ça change tout...

Peut-être Apache pourrait être le sauveur dans cette histoire, quand un script PHP s'exécute, il n'attend pas la fin du script pour exécuter le suivant? Sinon, il y a peut être moyen de le configurer...
 
WRInaute occasionnel
Je fais profiter de ce que j'ai trouvé, la commande "LOCK TABLES table WRITE" permet de faire attendre les autres threads qui voudraient accéder à la table lockée, ça permet d'éxecuter une suite de requête sur une table en étant sûr de ne pas être intérompu par une autre requête sur cette même table.
 
WRInaute impliqué
Si tu dispose de MySQL4 avec innodb, il y a les transactions et notament le niveau d'isolation pour gérer ce type de problème.
 
Discussions similaires
Haut