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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Pregunta]: Ejecutar esta consulta constantemente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: Ejecutar esta consulta constantemente  (Leído 425 veces)
Leguim


Desconectado Desconectado

Mensajes: 651



Ver Perfil
[Pregunta]: Ejecutar esta consulta constantemente
« en: 24 Octubre 2019, 01:38 am »

Buenas noches,
¿Como podría ejecutar esta consulta de una forma constante?

Mark_Disconnected()

Código
  1.        function Mark_Disconnected()
  2. {
  3. $timestamp_now = date('Y-m-d H:i:s');
  4. $timestamp_now = strtotime('-15 minutes', strtotime($timestamp_now));
  5. $timestamp_now = date('Y-m-d H:i:s', $timestamp_now);
  6.  
  7. $con = Connection('A', 'B');
  8. $query = $con->prepare('UPDATE users SET connected = 0, sid = null WHERE connected = 1 AND '.($timestamp_now).' >= last_activity');
  9. $query->execute();
  10. }
  11.  

La idea es hacerlo sin sockets, una de las soluciones podría ser un timeout de javascript que llama a una función ajax y una vez que se complete la solicitud "success:" se inicia otro timeout con la misma función... No se si esto está bueno o se sobre carga el servidor.

Realmente es algo con lo que estoy renegando hace rato ya.


En línea

mchojrin

Desconectado Desconectado

Mensajes: 33



Ver Perfil WWW
Re: [Pregunta]: Ejecutar esta consulta constantemente
« Respuesta #1 en: 7 Noviembre 2019, 13:50 pm »

No lo veo mal en principio.

Sobre el tema de la sobrecarga, dependerá de cuánto sea el timeout y cuánta concurrencia tengas


En línea

Ayudo a desarrolladores PHP a acceder a puestos mejor remunerados
[u]nsigned


Desconectado Desconectado

Mensajes: 2.376

Vue SSr


Ver Perfil WWW
Re: [Pregunta]: Ejecutar esta consulta constantemente
« Respuesta #2 en: 15 Noviembre 2019, 00:17 am »

Desde el vamos tenes un gran problema, y es que el protocolo HTTP 1.1 esta pensado y diseñado para ser desconectado:
se abre la conexion, se recibe la peticion HTTP, se procesa, en envia la respuesta HTTP y se cierra la conexion.

Por eso surgieron cosas como Socket.io para mantener una conexión activa. Eso de tirar de ajax dentro de un timeout solo da problemas, no tanto en el server sino en el propio cliente, por la naturaleza asíncrona de JS. Si no esta perfectamente programado y diseñado vas a terminar desbordando la cola de mensajes de JS (messages queue). Y ni hablar de los posibles huecos de seguridad que suponen llevar toda al logica de tu aplicacion a un simple timeOut que sera enviado en limpio al cliente.

Podrias llegar a usar ajax + timeOut, pero tendrias que hacer todo de forma sincrona y te digo que dominar la asincronia de js es mas difícil que dominar socket.io  :xD

Por que no queres usar sockets que es justo la herramienta que necesitas implementar?  :silbar:
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines