Comunidad de diseño web y desarrollo en internet online

Dudas sobre conexiones persistentes y bloqueo de registros

Citar            
MensajeEscrito el 10 Dic 2008 08:44 am
Que tal foreros,

tengo un problema y despues de mucho leer no se que opción tomar. Quería compartirlo con vosotros y ver si se os ocurre alguna solución o ya habeis pasado por esta decisión.

Estoy realizando una apliación RIA en FLEX+PHP+MySQL (Tablas InnoDB para poder bloquear registros).

El caso es que no me queda muy clara la operativa.

Quiero poder mostrar formularios en flex a usuario para la edición de datos por ejemplo, pero si otro usuario realiza la apertura del mismo registro, que no pueda editarlo. Solamente debe poder verlo.

El caso es que he leido sobre procedimientos almacenados, conexiones persistente, etc.. y no me aclaro con la forma de aplicarlo, dado que por un lado php cada vez que carga un script desconecta la conexión y si la realizo persistente y las conexiones simultaneas son muchas, habría mucha carga en el servidor, con el problema de poder quedarse conexiones abiertas y registros bloqueados.

Se os ocurre alguna forma de poder efectuar esto desde php?

Gracias de antemano.

Por SGS

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2008 04:58 pm
te recomiendo que uses clases para la conexion y es mas uses la calse de conexion como un singleton para que no crees una instancia a cada rato y ni para que corras un script

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 10 Dic 2008 07:12 pm
Ya uso clases, no como singleton, pero las uso. El problema es que no se como bloquear registros por un usuario usando el motor de bbdd. ¿Algún ejemplo?

Por SGS

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Dic 2008 03:24 am
Hola

Lo q tenes q hacer es dejar una marca en el registro q se abrio y sacarle la marca cuando se cierra el registro. Cada vez q abris un registro verificas si esa variable esta seteada, si esta no permitis modificacion.

Esto es lo q se llama "semaforos", fijate q se utilza mucho en la manipulacion del filesystem y tb en BBDD. Con lo q decis vos de las bases de datos inno db, solo bloquea los registros cuando es modificado asi ninguna otra instruccion de edicion pueda ejecutarse sobre el registro (esto es por el tema de las acciones en cascadas q no son controladas del todo por el usuario).

Igual tene cuidado con esto porque por lo general a mi experiencia siempre quedan registros marcados como q estan en edicion y quedan bloquedos por la eternidad, mas si es en sistemas web ya q tenes q controlar muy bien cuando el documento se cierra (fijate q al cerrar el browser tenes q lanzar un ajax para q ejecute la liberacion del registro... tene en cuenta toooodas las variables q puede ejcutar el usuario para dejar de utilizar el registro) y siempre terminas como administrador de bd liberando registros q quedaron bloqueados...

Espero q te sirva la ayuda, saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 17 Dic 2008 07:14 am
Si ves que esta muy dificil la solucion seguro estas haciendo algo mal, en InnoDB se pueden bloquear tablas pero no filas y todos los bloqueos se quitan al finalizar el script entonces cuando muestre el php en el momento que lo veas en pantalla ya habra cerrado la conexion entonces esa solucion no es viable, te recomiendo que le añadas a la tabla un tinyint que cuando este en uno signifique que la estan editando y cuando este en cero signifique que no asi le puedes validar el problema que tienes es si alguien entra a la edicion y nunca sale entonces nadie podra quitar ese bloqueo asi que te recomiendo que tambien guardes la hora para que despues de un lapso de tiempo ignores ese bloqueo

Y alfathenus sobre lo de usar semaforos no te la vueles, no esta programando un sistema operativo o un motor de base de datos o una aplicacion con ese nivel de concurrencia

Por lalo_5_2000

11 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.