Neveldo a écrit : > Bonjour, > > D'après vos explications : les données seront modifiées une première > fois, puis une seconde. La première modification sera enregistrée dans > la base de données, puis la seconde modification viendra écraser la > première. Ce sera donc la dernière modification qui sera prise en > compte. > > Attention : dans l'exemple que je donne, il y a la notion de temps. Relisez mon exemple. Je reprécise le cas échéant.
J'affiche des données D à un instant T sur un écran. L'utilisateur les modifie à l'écran. Puis il décide de les enregistrer. SAUF qu'entre temps, un autre utilisateur à lu les mêmes données D, les a modifié et enregistré plus rapidement que le premier utilisateur. Deux problèmes se posent : - les modifications du premier utilisateurs écrasent celle du deuxième, donc perte des informations. - dans un second temps, on peut aussi considérer que les modifications faites par le premier utilisateur (celle qui finalement seront conservées, car envoyées en dernier à la base de données), ne sont pas justes, car elles se basent sur des informations D valables à l'instant T. Or, le deuxième utilisateur a voulu les modifier, donc ce qui veut dire que ces informations D ne sont plus d'actualités... mais hélas, elle sont écrasées.... Pour résumé, le dernier qui a parlé à "raison" ! Le problème est de s'assurer qu'entre le moment où les données sont lues pour être affichées et le moment où on renverra ces données modifiées, on parle des mêmes données.Imaginez même que le deuxième utilisateur ait non pas modifié, mais supprimé les données D ! Quel sens donner alors aux modifications du premier utilisateur ?? Le problème vient bien évidemment du fait qu'on ne peut pas poser de verrou sur les données (et encore heureux avec un application sous *AMP !). Mais l'accès concurrents à des données se posent toujours dès qu'on est en multiutilisateurs. Je me demandais alors si un framework comme CakePHP incluait un système automatique de gestion des accès concurrents. Les solutions, j'en connais, mais j'aurais pensé trouver un truc tout fait : Exemple, un colonne lastupdate, lue en même temps que l'enregistrement, et dont la valeur est comparé au moment de l'update : si identique, on valide et on le met à jour, sinon, erreur. Existe-t-il donc qq chose d'automatique ? > Ceci dit, vous pouvez quand même protéger ce genre d'événement. Pour > cela, vous pouvez par exemple ajouter un champ "in_edition" à la table > concernée. Lorsqu'une personne se rend sur le formulaire d'édition, > in_edition prend l'id de l'utilisateur qui est entrain de modifier les > données. Il faut à ce moment là autoriser le formulaire correspondant > à l'article en question pour cet utilisateur seulement. > > Un autre moyen, serait de conserver une trace de totues les > modifications da > > On 9 juin, 09:29, Marc MENDEZ <[EMAIL PROTECTED]> wrote: > >> Bonjour, >> >> Je commence à me plonger dans CakePHP dans l'optique de la réécriture >> d'une application métier. >> J'aimerais savoir comment cakePHP gère l'aspect "multi utilisateur". A >> savoir, on affiche des données à un instant T, on les modifie à l'écran >> et on les enregistre. Sauf qu'entre temps, un utilisateur a également >> modifié ces données. Que se passe-t-il ? La règle du dernier qui a parlé >> à raison ? Un message d'erreur ? >> >> Merci de vos réponses. >> > > > > --~--~---------~--~----~------------~-------~--~----~ Groupe "Cakephp-fr". Adresse : [email protected] Pour résilier : [EMAIL PROTECTED] Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr -~----------~----~----~----~------~----~------~--~---
