elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  controlar multiples usuarios de manera correcta?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: controlar multiples usuarios de manera correcta?  (Leído 2,380 veces)
t4r0x

Desconectado Desconectado

Mensajes: 92



Ver Perfil
controlar multiples usuarios de manera correcta?
« en: 22 Agosto 2016, 06:36 am »

Buenas mi escenario es este, tengo una pagina donde debo controlar el acceso de multiples usuarios/sesiones a la vez, ellos verificarian si hay un "cupo" disponible si lo hay entonces recuperan un ese valor del cupo de la base de datos MySQL, esta verificacion deberia hacerme de manera que no haya conflico entre los usuarios a la hora de verificar. algo como esto:

tabla:

------------------------------
Id   |  CupoEsDisponible
------------------------------
1    |            1
2    |            1
3    |            1
4    |            1
5    |            1
------------------------------
El 1 en CupoEsDisponible indica que el cupo es disponible. el codigo:

Código
  1. // por aqui llegan todos los usuarios/sesiones
  2.  
  3.  
  4.  
  5. Begintransaction()
  6.  
  7. aqui el usuario verifica si hay cupo disponible ( si "CupoEsDisponible" es igual a 1 sino retornaria FALSE ).
  8. aqui todas las demas sesiones se detienen a esperan que la primera termine. y el problema es ese, las demas sesiones quedan esperando ya que todas acceden a la misma fila con Id = 1 pudiendo recuperar la fila 2 o 3, 4, 5 que estan disponibles asi que como hago para prevenir que no esperen y que busquen por otra fila?
  9. if(Query("SELECT * FROM Tabla_cupos_para_usuarios WHERE CupoEsDisponible = 1 LOCK IN SHARE MODE") != FALSE)
  10. {
  11.     el cupo es disponible asi que lo establecemos como no disponible ( igual a 0 )
  12.     execute("UPDATE Tabla_cupos_para_usuarios SET CupoEsDisponible = 0 WHERE Id = Id_que_obtuvimos_de_Query");
  13.  
  14.     mas codigo...
  15. }
  16.  
  17. Commit()
  18.  



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Manera correcta de hacer sesiones « 1 2 »
PHP
lord_Sirikon 10 6,692 Último mensaje 29 Abril 2011, 17:06 pm
por dimitrix
Manera correcta de optener UTC Time Zone de locacion especifica, date('Z')/3600;
PHP
Graphixx 0 1,904 Último mensaje 3 Mayo 2012, 23:32 pm
por Graphixx
[Resuelto] Manera correcta de salvar el contenido de una variable
PHP
t4r0x 5 3,164 Último mensaje 8 Septiembre 2015, 08:44 am
por t4r0x
¿Cual es la manera correcta de definir un decorador en una clase en pytho3?
Scripting
JVBS 1 1,976 Último mensaje 2 Marzo 2019, 02:14 am
por Guarrino
Consejos para usar WhatsApp de manera correcta
Noticias
wolfbcn 0 1,597 Último mensaje 26 Mayo 2019, 02:10 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines