Obtener el valor en tiempo real de un campo de una base de datos (Mysql)

CosmicBetelgeuse Seguir

Beta
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
8 Nov 2018
Mensajes
59
Buenas!,

He creado una web con HTML5, CSS3, javascript/jquery, PHP, MySQL... y me estoy planteando implementarle una funcionalidad en tiempo real.

Se trataría de que, según el valor de un campo de la base de datos (mysql), mostrar una imagen u otra en la web. También he pensado en crear un sistema de notificaciones: si un campo mysql tiene determinado valor enviar una notificación al usuario.

El problema lo tengo en como hacerlo en tiempo real sin que el usuario tenga que hacer nada. He pensado en que tal vez los websockets pudieran ser una buena opción pero nunca he utilizado websockets/Nodejs y no se si sería engorroso implementarlo/utilizarlo.

La web a veces puede llegar a tener unos 1.000 usuarios en un mismo momento (utilizo un servidor vps sencillito)

¿Algún consejo?

Gracias!
 

SvenDev

Programador
No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
Desde
26 Sep 2016
Mensajes
217
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
La verdad crear un server de websockets en nodejs es bastante fácil, puedes hacerlo haciendo comparaciones en la DB para verificar los cambios desde el mismo nodejs o avisando directamente desde PHP cada vez que hagas un update, dependiendo las necesidades de tu proyecto.
 

SvenDev

Programador
No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
Desde
26 Sep 2016
Mensajes
217
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Ya si no quieres utilizar nodejs, puedes hacerlo con ajax verificando la colunma cada segundo pero será un poco mas lento para el usuario y mas pesado para el servidor.
 

kj2

Kappa
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Verificado por Binance
Desde
1 Abr 2011
Mensajes
2.570
Puedes probar usar sockets en PHP:


Aquí te dejo un par de ejemplos de uso:


Igual tendrías como una tercer opción el usar deno (ya tiene su primera versión estable) en lugar de nodejs.

No es recomendable que hagas algo como usar un ajax que actualice cada segundo o podrías conseguir sin darte cuenta, hacerte un auto-ataque DDoS. Ten cuidado de no ponerte a hacer más o menos lo mismo con la BD.

La dificultad de hacerlo y el rendimiento son cosas que puedes probar tu mismo, desde mi lado la dificultad me parece similar en los 3 casos.

PD: De poder, en realidad podrías usar websocket con lo que te de la gana, puedes usar C, Python, Rust, Go, etc. Si vas a lo que es mas óptimo, muy probablemente antes que usar PHP o JS, terminarías usando un lenguaje compilado.

PD2: ¿JQuery?
DG1kpEY.jpg
 
Última edición:

CosmicBetelgeuse

Beta
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
8 Nov 2018
Mensajes
59
Veo que para trabajar con websocket en PHP no es necesario librerías, sin embargo existen unas cuantas...
¿Tal vez se recomienda el uso de librerías por que es más estable?
 

kj2

Kappa
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Verificado por Binance
Desde
1 Abr 2011
Mensajes
2.570
Veo que para trabajar con websocket en PHP no es necesario librerías, sin embargo existen unas cuantas...
¿Tal vez se recomienda el uso de librerías por que es más estable?

Las librerías, como en todos los lenguajes, lo que suelen procurar es simplificar el uso para agilizar las tareas (aunque de paso lastren rendimiento u otros problemas, pero no puedes pedir que todo sea perfecto). Básicamente porque además de ahorrarte líneas, pueden igual ahorrarte el tener que comprender lo que usas (los sockets, en este caso) y en su lugar solo tener que aprender lo que la librería te pone en su documentación (que muchas veces es simplificado al nivel copiar y pegar).

Por ej. la librería de elephant.io, si mal no estoy, te permite usar los sockets de php de un modo compatible con el javascript de socket.io, cosa que haciendo desde 0 sería más largo de tener que comprender e implementar, pero con la librería te ahorras ese trabajo y lo cambias por el comprender la librería solamente.

kj
 

slack

Beta
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 Jun 2020
Mensajes
47
Yo no me la complicaría tanto. Lo haría con AJAX actualizando cada tanto segundos. De hecho muchas webs grandes los hacen.
 

CosmicBetelgeuse

Beta
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
8 Nov 2018
Mensajes
59
Tal vez usando ajax sería suficiente (aunque entiendo que no sería la forma más optimizada).
El tema está en que no necesito una comunicación bidireccional, sería solo unidireccional, para enviar datos del servidor al cliente y tal vez utilizar websockets sería un poco "bestia" para lo que necesito... ¿y los Server Sent Events (SSE)?
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba