Ver Mensaje Individual
  #22 (permalink)  
Antiguo 05/09/2003, 02:51
Nark
 
Fecha de Ingreso: agosto-2003
Mensajes: 102
Antigüedad: 20 años, 8 meses
Puntos: 0
Cita:
Mensaje Original por dominguez
Hola, podría tendríamos dos instrucciones una para comprobar que el dato está en la tabla y la otra que por ejemplo hace un UPDATE. Pero, podría ocurrir que entre las dos instrucciones ese registro se borre y de el error no?? es decir:

->Instrucción que comprueba si existe el dato

****Entre las dos hay un período de tiempo en el que se puede eliminar.

->Intrucción que hace el UPDATE
oks entiendo lo que comentas, que la entrada a la pagina fuera simultanea... y por lo tanto la comprobacion de si hay esta permitido el paso fuera positiva para los dos...

bueno pues buscando soluciones simples en php... puedes hacer otra cosa, crear otra pagina...

Pagina1 ->
Entra todo el que quiera, al entrar se crea un registro en la bd, en que se guarda un id, por ejemplo, y una fecha... si quieres se puede guardar una ip o un nombre de usuario y ya tienes un log de los accesos...
A parte de esto... aparece en la pantalla un enlace a la segunda pagina, algo como "Comprobar el estado del registro"...

Pagina2 ->
La unica forma de entrar a esta pagina es por la pagina1, si quieres puedes poner un control enviando variables, por post, get o sesiones....
En esta pagina es donde se comprueba que no hay ninguna otra persona registrada en la tabla de la bd, que haga menos de una hora que este conectado (por eso guardamos la fecha)... si quieres tambien puedes olvidarte del log y simplemente mirar que no haya mas de un registro en la tabla, siempre y cuando despues borres los registros viejos... Aqui se haria la comprobacion, pero como ves ya no tenemos el problema anterior de simultaneadad... porque al llegar a la segunda pagina, ya tenemos apuntados todas las personas, si se conectaran dos personas a la primera pagina casi a la vez (a la vez es muy dificil si por ejemplo guardamos el timestamp, estamos hablando de decimas de segundo), pues solo podria entrar el primero que llego, la segunda persona en la segunda pagina, le diria que el sistema esta ocupado, ya que hay alguien que entra en menos de una hora...

si pasara por ejemplo el imposible que dos personas se conectaran el mismo instante exactamente a la pagina 1, pues simplemente se tendria que implementar en la pagina 2 otro control que compruebe timestamp iguales, si son iguales, elegir uno al azar o por si a caso, denegar a los dos el paso....

En esta pagina simplemente podria aparecer algo como: "Sistema libre, pulse en el boton para entrar"... en caso de que estuviera ocupada, pues "Lo sentimos, pero el registro esta actualmente en uso, por favor intentelo mas tarde"....


Pagina 3 ->
Simplemente el formulario, donde igual que antes solo se puede entrar desde la pagina 2. Luego tambien puedes hacer que al guardar los datos se borre el registro de esa persona en la tabla que hemos creado en la bd, quedando libre para los siguientes...

ya se que puede paracer un metodo muy cutre, si comparamos con semaforos y controles automaticos de una BD.... pero ya lo dije al principio es un metodo simple que podria funcionar