Eléphant du PHP |
453 Messages
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
