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 06/12/2011, 23h58   #1
Invité de passage
 
Inscription : août 2007
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 28
Points : 2
Points : 2
Par défaut Gestion de conflits multi clients

Bonjour,

Je développe une application Flash et Php/MysQl où plusieurs clients sont susceptibles d'écrire ou éditer en même temps des enregistrements similaires de certaines tables, ce qui n'est pas judicieux bien évidemment. Je voudrais comprendre à quel niveau une interdiction d’accès pourrait se faire si l'enregistrement est déjà en cours d'utilisation. Cela se gère t-il au niveau de l'application client ou bien de mes scripst php?

- Je pensais mettre un flag d’édition sur mes enregistrements (un booléen à 0 ou 1 selon s'ils sont en cours d’édition ou non) mais le mécanisme de vérification avant de permettre l'écriture fait faire pas mal d'aller retour entre la bdd et le client
- Une autre idée était d'utiliser Electroserver et connecter tous les clients par un socket. Ainsi le niveau d'intervention de chaque client sera connu et les conflits évités par le script server. Mais là j'ai peur de ne pas être assez calé

J'espère que quelqu'un a une suggestion plus simple à m'offrir! Merci par avance
badoumba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 09h25   #2
Membre actif
 
Avatar de Lordsephiroth
 
Patrick Mingard
Inscription : mai 2006
Messages : 166
Détails du profil
Informations personnelles :
Nom : Patrick Mingard
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 166
Points : 185
Points : 185
Bonjour,
J'ai toujours eu des problèmes avec des systèmes de locking sur des éléments. Les questions qui se posent sont toujours les mêmes : quel système utiliser pour "unlock" les éléments en cas de crash ou de fermeture du browser ? et effectuer cette tâche après combien de temps ?

Personnellement j'utilise généralement une approche optimiste. L'utilisateur choisi l'élément à éditer et l'affiche dans le formulaire du navigateur. Au moment de la sauvegarde, à l'intérieur d'une transaction du SGBD, je vérifie que personne ne soit venu écrire depuis le chargement de l'objet (comparaison sur un champ de date LAST_MODIFICATION par exemple, ou d'un numéro incrémental d'édition). Si par hasard l'enregistrement a été modifié, levée d'une exception indiquant à l'utilisateur qu'il a malheureusement perdu ses modifications et qu'il devra recommencer

La gestion de l'erreur peut être affinée, par exemple en faisant une comparaison sur chaque champ de l'élément édité et de présenter à l'utilisateur les deux versions pour qu'il fasse un choix. Ce mécanisme de gestion est toutefois très lourd à gérer.

Bon courage pour votre réflexion sur cette problématique compliquée (surtout pour un protocole stateless comme HTTP couplé avec un langage de scripting comme PHP).
__________________
Always code as if the guy maintaining your application is a violent psychopath!
Site personnel sur la saga Final Fantasy : http://www.final-fantasy.ch
Lordsephiroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h05.


 
 
 
 
Partenaires

Hébergement Web