PHP - Sesiones concurrentes

 
Vista:

Sesiones concurrentes

Publicado por Damian (62 intervenciones) el 07/10/2014 19:09:39
Estoy realizando un juego de preguntas y respuestas, en donde para jugar el usuario debe registrarse y luego iniciar sesión para poder jugar. Esto esta bien y me funciona, pero me doy cuenta que si al momento de que un usuario tiene su sesión activa (por ende está jugando) y otro usuario ingresa para jugar, las sesiones se pisan y por esto no se corresponden las preguntas con sus respuestas.

O sea si ya está un usuario jugando ($_SESSION['cod']=$row['CodUser'];) y luego entra otro, esa variable ($_SESSION['cod']) claramente toma otro valor (el del código de usuario recién autenticado).

Estaba leyendo un poco aca http://php.net/manual/es/session.examples.basic.php dónde al final hay una parte que dice "Nota" y se comenta eso de la concurrencia y el uso de session_write_close() cuando hay muchas peticiones. Pero no comprendo bien cómo realizarlo o como debería solucionarlo.

Puede haber muchos usuarios jugando en forma concurrente, pero la idea es que cada usuario sea independiente. Capaz que es algo fácil de solucionar pero no me doy cuenta. ¿Alguna idea de como implementarlo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Sesiones concurrentes

Publicado por Damian (62 intervenciones) el 07/10/2014 19:36:12
Me quede pensando y creo que habría que hacer como un array() de sesiones. Si es que esto existe. Sería como algo dinámico dónde ir guardado el código de usuario en la posición 1, el otro en la 2...y así hasta n posibles usuarios.
A medida que el usuario cierra su sesión ir borrando en el array() su código de usuario en la posición que estaba.
Solo se me ocurrió esa posbilidad por ahora...¿que dicen? ¿alguna otra sugerencia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sesiones concurrentes

Publicado por xve (6935 intervenciones) el 07/10/2014 23:44:10
Hola Damian, creo que te confundes...

Cada usuario tiene sus variables de sesiones, y por muchos usuarios que haya, cada uno tiene la suya, y todas se llaman igual.

Prueba a entrar con dos navegadores distintos al mismo tiempo, veras que cada uno guarda su valor.

El servidor diferencia a cada usuario por el PHP SessionID que generar en cada navegador.

Si no te ha quedado claro, coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sesiones concurrentes

Publicado por Damian (62 intervenciones) el 08/10/2014 00:01:41
Hola xve, sos un pulpo, estas en todos lados; que genio.

Te cuento, lo he probado localmente (no se si eso tiene que ver). Pero lo hice en distintos navegadores, me pasa que por ejemplo cuando había una pregunta para un usuario X, la respondía y luego me fui a otro navegador con un usuario Y, lo cual también respondía (era otra pregunta distinta) y como resultado me salía que la opcion "mengano" es incorrecta; cuando esa misma opción ("mengano") no correspondia a esa pregunta sino a la del usuario X.

No tendría que pasar eso si cada uno como dices tiene sus variables de sesiones, que es lo que uso. Como ya dije, lo probe sólo localmente (pero en distintos navegadores) y también en el mismo navegador, pero con distintas pestañas. Y me pasa eso que comento.

Lo voy a volver a probar en distintos navegadores haber si me funciona como dices.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sesiones concurrentes

Publicado por xve (6935 intervenciones) el 08/10/2014 00:07:51
Hola Damian, cuando digo distintos navegadores, me refiero por ejemplo a firefox y chrome (siempre que sea en la misma maquina).

No te funcionara si por ejemplo abres dos firefox en la misma maquina, ya que es el mismo navegador, por lo que utiliza la misma sesión.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sesiones concurrentes

Publicado por Damian (62 intervenciones) el 08/10/2014 00:12:22
Exactamente, yo me refiero a lo mismo. Chrome, firefox, Opera...todos ellos abiertos en la misma PC. Mañana lo vuelvo a probar y comento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jaime Molina

Sesiones concurrentes

Publicado por Jaime Molina (1 intervención) el 08/10/2014 07:19:48
No puede ser Damian, si te fijas en la cookie PHPSESSID de cada navegador veras que es distinta, por lo tanto, las variables de sesión son diferentes para cada navegador o usuario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sesiones concurrentes

Publicado por Damian (62 intervenciones) el 08/10/2014 16:34:36
Hola, ya me estaba volviendo loco. Lo he vuelto a probar y es como dicen, cada usuario tiene sus propias variables de sesión. Lo he testeado en 3 navegadores diferentes (Chrome, Firefox y Opera), y todo funciona perfecto.


Ya que estamos con las sesiones, me quedan dos cosas más:

1) Si bien al usuario siempre se le presenta la opción de abandonar y que al seleccionarla (boton "abandonar") destruye sus variables de sesiones. ¿Que debería hacer en el caso de que cierre el navegador estando la sesión corriendo? ¿O cambie de página? u otras cosas similares, sin apretar ese boton de "abandonar". ¿Me conviene destruir esas variables de sesion? Y si es así ¿Cómo lo logro desde php?

2) ¿Hay un limite de sesiones abiertas? O puede haber 300 usuarios (con sus respectivas variables de sesiones) corriendo sin problemas.

Aguardo sus comentarios!!! y Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar