MySQL - Quiero saber como detectar connexiones a mysql server

   
Vista:

Quiero saber como detectar connexiones a mysql server

Publicado por Pedro (5 intervenciones) el 31/05/2014 18:35:51
Hola:
tengo una página web y quiero saber cómo hacer una query para detectar quien está conectado a mysql_server.
He buscado un poco y encontré "information_schema.processlist" y "show procceslist"; pero no sé qué hacer con esto.
No sé cómo vincular el resultado de esas query con una query sencilla que seleccione un nombre de usuario y chacer una comparación, etc.
Lo que necesito es simple: cuando un usuario vea a otro, mostrar si está conectado o no. Será que no debo hacerlo con SQL? Ayuda por favor...
Gracias
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
Imágen de perfil de xve

Quiero saber como detectar connexiones a mysql server

Publicado por xve (899 intervenciones) el 01/06/2014 10:28:11
Hola Pedro, con la instrucción show processlist, ves los procesos que se están utilizando, no los usuarios conectados al mysql.

Para saber los usuarios conectados en un momento dado, tienes que consultar en la base de datos de mysql information_schema, donde contiene toda la información de la misma...la consulta podría ser:
1
2
3
4
5
6
7
SELECT SUBSTRING_INDEX(host, ':', 1) AS host_short,
       GROUP_CONCAT(DISTINCT USER)   AS users,
       COUNT(*)
FROM   information_schema.processlist
GROUP  BY host_short
ORDER  BY COUNT(*),
          host_short;

Espero que te sirva... 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

Quiero saber como detectar connexiones a mysql server

Publicado por Pedro (5 intervenciones) el 03/06/2014 09:34:59
Hola Xve:
primero que todo, gracias por tu ayuda, es bien apreciada. Perdona la demora de mi respuesta es que hasta ahora no había podido hacer nada. Probé la consulta que me diste, pero el resultado es el mismo que había probado antes. El resultado de esa consulta me da el host y username que se utiliza para acceder a la base de datos. Por ejemplo, ya que utilizo Wamp, el resultado es 'localhost: root'. Yo necesito tener una identificación de los usuarios, pero de los usuarios de mi página, no de los de la base de datos. Yo quiero que el usuario que esté loggeado en mi página pueda saber cuáles de los otros usuarios están loggeados también. Estuve viendo el comentario sobre mi pregunta en PHP, el resultado de ese código es cuántas personas acceden a mi página, no?
Xve muchas gracias por tu ayuda nuevamente.
Será posible hacer lo que quiero con MySQL o PHP?
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

Quiero saber como detectar connexiones a mysql server

Publicado por xve (899 intervenciones) el 03/06/2014 11:25:56
Uy, mil perdones Pedro, te habia entendido mal.

para hacerlo con PHP, tendrás que programarlo de alguna manera... yo te recomiendo utilizar algo como memcache o Redis... Redis es perfecto para ello, ya que tiene caducidad en los datos.
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

Quiero saber como detectar connexiones a mysql server

Publicado por Pedro (5 intervenciones) el 03/06/2014 11:43:22
Ok Xve:
muchas gracias por tu ayuda. Indagaré sobre Redis...
Saludos
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

Quiero saber como detectar connexiones a mysql server

Publicado por Pedro (5 intervenciones) el 03/06/2014 12:04:10
Hola Xve:
perdona que te incomode tanto con lo mismo... pero tengo unas pequeñas dudas que quisiera, si puedes, me ayudaras. Yo había pensado, en mi página de 'Log in', una vez autenticado el usuario, alterar un campo (online, offline) en la base de datos. Pero como muchas veces no cerramos las sesiones en las páginas en las que estamos registrados, sencillamente cerramos el navegador o la pestaña y no damos click en cerrar sesión ó 'Log out'; no tengo como alterar ese campo de la base de datos para que muestre que no está conectado. O sea, si iniciamos sesión, poner el campo en 'online'; y si cerramos, ponerlo en 'offline'. Espero me entiendas hasta ahora.
Esos websites que tienen chats, ó Facebook, ó el Hangout de Gmail(que por cierto muchas veces hay usuarios conectados y no se ven como 'conectados', por lo que no sé hasta que punto es eficaz un código que diga si están loggeados o no los usuarios) Cómo registran estos sitios los usuarios que están conectados?
Amigo gracias a tu ayuda he podido conocer más de PHP y MySQL. Ahora mismo estoy averiguando sobre Redis, porque sinceramente no sé lo que es. Muchas gracias otra vez por tu ayuda.
Saludos
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 Oscar

Quiero saber como detectar connexiones a mysql server

Publicado por Oscar (9 intervenciones) el 03/06/2014 12:09:53
Podrías en lugar de poner un campo online-offline, poner un campo fecha-hora de ultimo acceso y actualizarlo cada vez que el usuario navega por una de las paginas de tu sitio.

Luego puedes indicar los usuarios que han realizado alguna acción en los último 10 minutos o algo por el estilo como usuario activos
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

Quiero saber como detectar connexiones a mysql server

Publicado por Pedro (5 intervenciones) el 03/06/2014 17:04:30
Hola Oscar:
gracias por tu comentario. No lo había pensado de esa manera... creo que podría resultar. Gracias. Saludos.
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

Quiero saber como detectar connexiones a mysql server

Publicado por xve (899 intervenciones) el 03/06/2014 14:59:35
redis, es una base de datos no referencial que trabaja en memoria con el formato clave=>valor, el cual los registros tienen una propiedad de caducidad.

Yo creo que no se puede saber a ciencia cierta si apago el navegador o el ordenador, por lo que estar o no validado en el sistema, no tiene mucha validez.

la mejor manera que se me ocurre, es que cada vez que un usuario abre una de tus paginas web, añadas un registro en redis para ese usuario, con una validez por ejemplo de 1 minutos (pasado el minuto, el registro queda eliminado). De esta manera, tu podrás contar cuantos usuarios hay activos durante el ultimo minuto.

Si utilizas mysql por ejemplo, y tienes muchos usuarios simultáneos, puede ser una gran carga para MySQL.... aunque también se puede hacer.
La manera que comentas seria correcta para hacerlo con MySQL... cada vez que un usuario visualiza una pagina, actualizas una tabla por su IP por ejemplo, donde introduces la fecha actual mas un minuto, por lo que para saber que usuarios hay actualmente, solo tienes que revisar esa tabla para buscar todos los registros que todavia la fecha del sistema sea inferior a la guardada en la base de datos.

El problema de mysql, es que tendras que ir eliminando los valores antiguos.

Espero que te sirva... 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