par
niuxe » 17 févr. 2013, 14:45
J'ai donné les deux solutions et donner mon avis.
La 1ère solution qui semble sympa peut s'avérer un gros bogue :
* Les users A et B enregistrent en même temps la fiche. Quel enregistrement sera pris en compte ?
* User A n'a pas activé le javascript sur sa machine pour des raisons de sécurité par exemple. A ne pourra pas éditer correctement la fiche
* XX users sur la même fiche + XX users sur la même application.... Le serveur n'est pas une bête de course....
La 2e solution :
* user B veut éditer la fiche X alors que user A est en train d'éditer cette dernière. User B sera redirigé vers l'index et aura une notification "la fiche est en cours d'édition, veuillez réessayer un peu plus tard". A enregistrera correctement la fiche.
* user A n'a pas activé le JS. Ce n'est pas un souci puisque cela fonctionnera forcément
* 1 user la fiche. Les autres attendent patiemment. Le serveur sera nettement moins mis à contribution.
Dans la 2e solution, tout résidra dans ce système de verrouillage de fiche. Ce qui veut dire qu'il faudra bien gérer cela. Lorsque le user cliquera sur édition, il y aura automatiquement 2 requêtes :
* UPDATE
* SELECT (gestion fine du select) :
° Est ce qu'il y a une donnée ?
° Est ce que la fiche est verrouillée ?
Pour cela, je préconise un système de transaction :
* START TRANSACTION/BEGIN TRANSACTION
* COMMIT
* ROLLBACK
Au passage, la table devra être en InnoDB bien sûr

J'ai donné les deux solutions et donner mon avis.
La 1ère solution qui semble sympa peut s'avérer un gros bogue :
* Les users A et B enregistrent en même temps la fiche. Quel enregistrement sera pris en compte ?
* User A n'a pas activé le javascript sur sa machine pour des raisons de sécurité par exemple. A ne pourra pas éditer correctement la fiche
* XX users sur la même fiche + XX users sur la même application.... Le serveur n'est pas une bête de course....
La 2e solution :
* user B veut éditer la fiche X alors que user A est en train d'éditer cette dernière. User B sera redirigé vers l'index et aura une notification "la fiche est en cours d'édition, veuillez réessayer un peu plus tard". A enregistrera correctement la fiche.
* user A n'a pas activé le JS. Ce n'est pas un souci puisque cela fonctionnera forcément
* 1 user la fiche. Les autres attendent patiemment. Le serveur sera nettement moins mis à contribution.
Dans la 2e solution, tout résidra dans ce système de verrouillage de fiche. Ce qui veut dire qu'il faudra bien gérer cela. Lorsque le user cliquera sur édition, il y aura automatiquement 2 requêtes :
* UPDATE
* SELECT (gestion fine du select) :
° Est ce qu'il y a une donnée ?
° Est ce que la fiche est verrouillée ?
Pour cela, je préconise un système de transaction :
* START TRANSACTION/BEGIN TRANSACTION
* COMMIT
* ROLLBACK
Au passage, la table devra être en InnoDB bien sûr ;)