2011-12-13 18 views
5

He terminado recientemente mi aplicación y tengo un gran problema. Necesito permitir que solo 1 usuario acceda a él a la vez. Hay una página de índice accesible para cada usuario cada vez y un botón de "inicio". Cuando el usuario hace clic en iniciar, la aplicación se bloquea y otras personas deben esperar hasta que el usuario finalice. Cuando el usuario cierra la pestaña/navegador, la aplicación debe desbloquearse automáticamente. Cada usuario tiene 5 minutos para usar mi aplicación. Resolví parcialmente mi problema, pero todavía no funciona correctamente: en cada sitio configuré el script jquery que cada 5 segundos activa el archivo "extend.php" en el servidor (función $ .get()). El archivo php modifica el archivo time.txt (lo cambia a time() + 5) y el script en el sitio intex verifica si (tiempo()> contenido time.txt). De modo que cuando los usos cierran la pestaña/navegador, la aplicación es accesible. Obviamente, mi aplicación también se basa en sesiones (cuando el usuario cierra el navegador, pierde el acceso). En algunas computadoras simplemente no funciona (parece que jquery no activa el archivo extend.php y hace que mi aplicación esté accesible todo el tiempo). Entonces mi pregunta es: ¿ves alguna otra forma de resolver mi problema?Compruebe si el usuario está actualmente en línea (en vivo)

El descr podría ser un poco incómodo, pero yo quería para describir todo strightforward;)

Saludos.

+1

¿Qué sistema operativo/navegador no funciona? Comience desde allí y vea si hay algo en común entre los que tienen el problema. Puede estar persiguiendo un problema de código que realmente es un problema del navegador. – Brian

+0

Está haciendo lo correcto en principio por el sonido de la misma. Lo primero que debe hacer es subir a una máquina en la que no funciona y ver si arroja errores visibles en el navegador. – graphicdivine

Respuesta

0

Puede poner un LOCK en una tabla mysql cuando un usuario está en línea y desbloquearlo cuando están desconectados.

El único problema es si su código olvida desbloquear.

+0

Creo que ese era el problema que estaba tratando de resolver ... –

1

Su método está bien, debería funcionar. Sí, node.js, o cualquier otro javascript del lado del servidor se puede utilizar para hacer lo mismo, pero tener un script activado es, de lejos, la solución más fácil. Deberías enfocar tu tiempo para investigar más en qué máquinas no funciona.

2

Intente utilizar una función de descarga de jQuery para que cuando hagan clic en el botón de cerrar su navegador web ejecute una última línea de script antes de que el usuario salga. Ejemplo:

$(window).unload(function(){ 

    "your php function to unlock the app here" 

}); 

Espero que esto ayude.

1

Si se restringe a 5 minutos, configúrelo para que caduque en 5 minutos. Puede usar un contador en jquery para mostrar cuánto tiempo está disponible. Cuando llegue a su vencimiento, notifique al usuario que se acabó el tiempo. Una vez que el tiempo haya expirado o el usuario haya terminado con la aplicación, actualice la hora.txt a la hora() o como lo maneje normalmente cuando la aplicación esté accesible. Sin sondeo y 1 actualización.

Cuestiones relacionadas