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:
Revisando el contenido del LOG pude ver lo siguiente:<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)
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.