Foros del Web » Programando para Internet » PHP »

Bloquear registro en el que se trabaja

Estas en el tema de Bloquear registro en el que se trabaja en el foro de PHP en Foros del Web. Hola amigos, Nuevo aqui de pregunton... pues estoy creando un sistema para que varios usuarios accesen a el simultaneamente, debido a esto necesito tener el ...
  #1 (permalink)  
Antiguo 10/05/2002, 19:31
Avatar de locojars  
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 15 años, 7 meses
Puntos: 4
Bloquear registro en el que se trabaja

Hola amigos,

Nuevo aqui de pregunton... pues estoy creando un sistema para que varios usuarios accesen a el simultaneamente, debido a esto necesito tener el registro "lock" para que el primer usuario que lo tome lo bloquee y nadie mas puede accesar a el hasta que este lo suelte.

Espero me hayan entendido pero en pocas palabras lo que quiero es tomar un registro y hasta que yo deje de trabajar con el.. alguien mas lo pueda utilizar.

Gracias siempre por su ayuda :)
Salu2
JARS
  #2 (permalink)  
Antiguo 11/05/2002, 23:40
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Re: Bloquear registro en el que se trabaja

Bueno, creo que MySQL por si solo tiene esa caracteristica de bloquear la TABLA ENTERA cuando se esta modificando o agregando un registro.

Por otro lado, el PostgreSQL bloquea ESE registro en particular dejando el resto de la tabla editable.

Saludos ;)

<tr>
<td bgcolor="#339933"> <font face="Verdana, Arial" size="1" color="#FFFFFF">>>
[/CODE]</td> <td align="right" bgcolor="#666666">
  #3 (permalink)  
Antiguo 12/05/2002, 13:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Bloquear registro en el que se trabaja

Bueno .. a mi se me ocurre una solucion &quot;a mano&quot;

Usando un campo extra para cada registro tipo &quot;look&quot; siendo este un simple flag (bandera) on/off (si/no) .. al entrar el primer usuario .. actualizas el flag look a on (UPDATE .. ) dejas que el usuario trabaje sobre el registro y al terminar .. le dices al usuario q salga por alguno link tipo &quot;ya termine&quot; el cual tendria q hacer la funcion de actualizar el registro en cuestion campo flag look con valor OFF

Por su puesto . al entrar cualquier persona a trabajar sobre ese registro debes de consultar ese flag .. si esta en on es que hay alguien ya en el registro trabajando .. y rechazas la nueva conexion . si no, lo dejas pasar y haces lo comentado mas arriba ..

Si necesitaras bloquear toda la tabla .. yo crearia una tabla extra con un solo campo .. el look mencionado .. y consultaria ese flag en todas las consultas de la tabla que quermos bloquear ...

No he mirado si Mysql soporta o tiene alguna funcion ya implementada para esta accion .. pero la que propongo &quot;manual&quot; es facil de implementar y efectiva tanto para bloquear registros o tablas enteras.

Un saludo,
  #4 (permalink)  
Antiguo 12/05/2002, 15:15
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Re: Bloquear registro en el que se trabaja

Muy interesante tu solucion Cluster!!

Solo una duda...

Que pasa cuando alguien se desconecta antes de terminar con la edicion de un registro, o se le olvida darle &quot;terminar&quot;??? se queda bloqueado &quot;forever&quot; (hasta que alguien edite el campo en la BD)??

;)

<tr>
<td bgcolor="#339933"> <font face="Verdana, Arial" size="1" color="#FFFFFF">>>
[/CODE]</td> <td align="right" bgcolor="#666666">
  #5 (permalink)  
Antiguo 12/05/2002, 19:36
Avatar de locojars  
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 15 años, 7 meses
Puntos: 4
Re: Bloquear registro en el que se trabaja

Gracias a Cluster y Manolo por sus respuestas.. bueno la solucion de Cluster estaba muy interesando hasta que surgio la duda de Manolo ;) voy a seguir averiguando a ver que puedo hacer con esto. mientras me gustaria que me siguieran opinando sobre esto.

La BD que estoy utilizando es MySQL.

Salu2 y Gracias
JARS
  #6 (permalink)  
Antiguo 12/05/2002, 21:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Bloquear registro en el que se trabaja

Para completar mi idea .. podriamos añadir un campo extra al registro tipo fecha (un TimeStamp) .. en el cual guardar la fecha (y hora) del ultimo acceso ..

En cada acceso, deberiamos chekear el estado del flag (look, si/no) + la fecha de la ultima entrada al sistema .. y verificar la fecha de entrada con la fecha actual (fechahora, timestamp por ejemplo) para de esta manera establecer una regla de &quot;expiracion&quot; a tiempo definido.

En caso de superar el tiempo definido desde la ultima conexion .. actualizamos el tiempo con el tiempo actual y modificamos el flag &quot;look&quot; a off .. o seguiemo en on si seguimos en la zona que modifica datos ..

Esto seria mas o menos la idea ...

Otro sistema tal vez mas eficiente seria crear un Cron (se escribe asi?) de Unix (un digamos *.bat de DOS) el cual se ejecute cada cierto tiempo chekeando las fechas de entrada de cada registro y colocar el flag look a off si cumplen la regla de &quot;expiracion&quot; que le indiquemos.

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:27.