Ver Mensaje Individual
  #21 (permalink)  
Antiguo 25/06/2007, 05:49
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Fijarse si alguien esta modificando el registro al que quiero entrar

Cita:
Iniciado por gabriel em Ver Mensaje
Hola amigos de foro!!
Tengo una pagina donde pueden entrar varios usuarios a la vez y estos pueden modificar cosas, el problema que tengo es el siguiente:

Tengo un campo que se llama "slogan" y los usuarios pueden entrar y modificarlo. El problema que se me ocurre es cuando un usuario entre a modificarlo y justo mientras lo esta modificando, entre otro usuario de otra maquina y tambien entre a modificarlo.

Entonces lo que voy a hacer es que cuando alguien entre a modificarlo una variable "SloganEnUso" se ponga True y no deje que los demas entren hasta que este salga y "SloganEnUso" se ponga nuevamente en False.
Hasta ahi todo bien, ahora se me ocurre este problema que no se como solucionar:

Entra un usuario a modificar el slogan, entonces "SloganEnUso" se pone true. Entonces otro usario de otra maquina quiere entrar a modificarlo, pero como "SloganEnUso" es True le dice que no puede entrar porque esta en uso.
Justo en ese momento el primer usuario se distrae y se va a pasear el perro. El otro se queda 20 minutos sin poder entrar a modificar el slogan !

Como lo puedo solucionar? se me ocurre con session time out pero no se como..
Aparte de todo lo que se ha dicho, el bloqueo de registro es tarea del motor de la BD. ¿Tu crees que ese campo va a cambiarse tan a menudo? Te recomiendo que hagas un buen estudio preliminar de las necesidades del cliente y, si puedes, mejorarlas. El que dos o más usuarios manipulen un dato de la BD a la vez es muy improbable pero puede pasar. Este es un tema que lleva asi desde que se crearon las BD. Para eso estan los bloqueos.

Pero en la programación web las acciones sobre los datos de la BD se realizan de forma no persistente. Es decir, el usuario puede ver, manipular, modificar, borrar los datos en el navegador pero hasta que no se pulsa en botón de enviar (o hacer el postback, como mejor te plazca llamarlo) y dichos datos viajan con el documento HTML hasta el servidor, la BD esta liberada de toda conexion (no persistente). Que dos páginas web ataquen el mismo registro al mismo tiempo es aún más improbable. En caso de que esto ocurriera, obviamente se grabaría el que primero llegara. Esto es inevitable.

Tambien puedes crear un log en una tabla de todos los accesos al registro del slogan donde guardes quien lo hace, a que hora y dia y lo que queria guardar. Asi siempre puedes controlar todo lo que pasa en ese registro.

De todas formas, esta discusión es eterna. Que dos usuarios accedan al mismo registro al mismo tiempo en una conexion contra una BD no persistente es tan improbable como que un avión te caiga en la cabeza (improbable que no imposible )


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -