Foros del Web » Programando para Internet » PHP »

Leer el log de shoutcast para estadisticas...

Estas en el tema de Leer el log de shoutcast para estadisticas... en el foro de PHP en Foros del Web. Hola... Necesito leer el archivo LOG (sc_serv.log) que genera el shoutcast para poder hacer estadisticas, lo que mas me interesa es cuanto se ha consumido. ...
  #1 (permalink)  
Antiguo 16/03/2009, 21:35
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
Leer el log de shoutcast para estadisticas...

Hola...

Necesito leer el archivo LOG (sc_serv.log) que genera el shoutcast para poder hacer estadisticas, lo que mas me interesa es cuanto se ha consumido.

Los datos que guarda dicho archivo son mas o menos similares a los siguientes:

Código:
<03/16/09@02:49:49> [SHOUTcast] DNAS/win32 v1.9.8 (Feb 28 2007) starting up...
<03/16/09@02:49:49> [main] loaded config from C:\Archivos de programa\SHOUTcast\sc_serv.ini
<03/16/09@02:49:49> [main] initializing (usermax:100 portbase:8000)...
<03/16/09@02:49:49> [main] No ban file found (sc_serv.ban)
<03/16/09@02:49:49> [main] No rip file found (sc_serv.rip)
<03/16/09@02:49:49> [main] opening source socket
<03/16/09@02:49:49> [main] source thread starting
<03/16/09@02:49:49> [source] listening for connection on port 8001
<03/16/09@02:49:49> [main] opening client socket
<03/16/09@02:49:49> [main] Client Stream thread [0] starting
<03/16/09@02:49:49> [main] client main thread starting
<03/16/09@02:49:57> [source] connected from 127.0.0.1
<03/16/09@02:49:57> [source] icy-name:This is my server name ; icy-genre:Rock
<03/16/09@02:49:57> [source] icy-pub:0 ; icy-br:128 ; icy-url:http://www.oddsock.org
<03/16/09@02:49:57> [source] icy-irc:N/A ; icy-icq:N/A ; icy-aim:N/A
<03/16/09@02:50:06> [dest: 127.0.0.1] starting stream (UID: 0)[L: 1]{A: Windows-Media-Player/11.0.5721.5230}(P: 0)
<03/16/09@02:50:06> [dest: 127.0.0.1] connection closed (0 seconds) (UID: 0)[L: 0]{Bytes: 32768}(P: 0)
<03/16/09@02:50:07> [dest: 127.0.0.1] starting stream (UID: 1)[L: 1]{A: NSPlayer/11.0.5721.5251 WMFSDK/11.0}(P: 0)
<03/16/09@02:50:07> [dest: 127.0.0.1] connection closed (0 seconds) (UID: 1)[L: 0]{Bytes: 32768}(P: 0)
<03/16/09@02:50:07> [dest: 127.0.0.1] starting stream (UID: 2)[L: 1]{A: NSPlayer/11.0.5721.5251 WMFSDK/11.0}(P: 1)
<03/16/09@02:50:08> [dest: 127.0.0.1] connection closed (0 seconds) (UID: 2)[L: 0]{Bytes: 32768}(P: 1)
<03/16/09@02:50:08> [dest: 127.0.0.1] starting stream (UID: 3)[L: 1]{A: Windows-Media-Player/11.0.5721.5230}(P: 0)
<03/16/09@02:50:08> [dest: 127.0.0.1] connection closed (0 seconds) (UID: 3)[L: 0]{Bytes: 40960}(P: 0)
<03/16/09@02:50:08> [dest: 127.0.0.1] starting stream (UID: 4)[L: 1]{A: NSPlayer/11.0.5721.5251 WMFSDK/11.0}(P: 0)
<03/16/09@02:50:08> [dest: 127.0.0.1] connection closed (0 seconds) (UID: 4)[L: 0]{Bytes: 49152}(P: 0) 
Revisando el contenido del LOG pude ver lo siguiente:

Cuando un usuario se conecta (starting stream) queda registrada la fecha y hora, la IP y el reproductor que utiliza. (util para llevar un control de los usuarios conectados, sus ips, que tipo de reproductor y version utilizan, etc)

Cuando un usuario se desconecta (connection closed), queda registrado cuanto tiempo permaneció conectado y los bytes consumidos... son esos datos los que me interesa poder leer.

Lo que se me ocurre hacer desde php:

- abrir el sc_serv.log
- leer su contenido...
- eliminar todas las lineas que NO contengan "connection closed" dentro de su cadena.
- leer en cada linea lo que esté entre "{Bytes: " y " }" y sumarlo para obtener cuantos bytes se han consumido.

EN resumen sería algo asi, ademas de poder calcular los bytes consumidos en un mes determinado, etc.

Creo que esos son los pasos que debería seguir para poder obtener los datos que deceo pero no se como podría implementarlo o al menos no se me ocurre como leer solo las lineas que tengan las palabras "connection closed" para despues leer cierta parte de la cadena, etc.

Ojalá alguien pueda orientarme al respecto... que no se piense que pido codigo listo para copiar y pegar, solo pido ayuda para crear el script.

Saludos.
  #2 (permalink)  
Antiguo 16/03/2009, 21:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Leer el log de shoutcast para estadisticas...

claro...

primero abres el archivo, de preferencia con file() para convertirlo en un arreglo...

lo iteras y en cada vuelta comparas si la cadena contiene "connection closed" y realizas un preg_match() para obtener el valor deseado...

y listo, acumulas los datos y luego los interpretas....

Código PHP:
$out 0;

foreach(
file('foo') as $line)
{
  if (
strrpos($line,'bar'))
  {
    
preg_match('/\{buzz:(\d+)\}/'$line$candy);

    
$out += $candy[1];
  }
}

// ... 
suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/03/2009, 21:53
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Leer el log de shoutcast para estadisticas...

muchas gracias por responder...

le hechare un vistazo y ya mañana con tiempo me pondre manos a la obra con esto.

gracias por tu ayuda, cualquier detalle posteo aqui mismo.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:45.