Foros del Web » Administración de Sistemas » Unix / Linux »

Saber descargas simultaneas de archivo usando pids de apache

Estas en el tema de Saber descargas simultaneas de archivo usando pids de apache en el foro de Unix / Linux en Foros del Web. hola, Bueno la verdad es que esto que pido no sé si es posible. Pero por si acaso alguíen se ha topado alguna vez con ...
  #1 (permalink)  
Antiguo 20/10/2010, 11:14
 
Fecha de Ingreso: octubre-2010
Mensajes: 19
Antigüedad: 14 años, 1 mes
Puntos: 1
Saber descargas simultaneas de archivo usando pids de apache

hola,

Bueno la verdad es que esto que pido no sé si es posible.

Pero por si acaso alguíen se ha topado alguna vez con el problema y me puede ayudar...

Lo que ocurre básicamente es que necesito habilitar en el servidor un sistema de descargas para una serie de usuarios.

Desde lenguaje de servidor y con base de datos controloaría todo.

Necesito que el usuario pueda descargase el archivo sólo una vez ya que pesa 6GB, esto no es problema con php.

Es decir hasta aqui ningún problema, todo lo sé hacer.

Pero ahora viene la miga, resulta que tengo un servidor dedicado con varias cuentas, y no quiero que ese archivo lo puedan descargar simultaneamente mas de 10 personas por ejemplo, porque entonces las demás páginas se ralentizarían.

Y el caso es que no sé muy bien como tratar esto:

Cuando sé que el archivo que se estaba descargando un usuario ha terminado de descargarse o simplemente el usuario paró la descarga.

Si tuviese alguna forma de saber esto, si que podría contabilizar el número de descargas simultaneas.

He llegado a pensar que tal vez obteniendo una tabla de los pid y su request de los procesos de apache y seleccionando los del archivo en cuestion podría crear un script que contabilizará las descargas actuales.

Ahora bien, como obtengo un listado de los procesos de apache y como cuento solo los que tiene un get del archivo en cuestión.

No sé si me he explicado bien, espero que si.

La intención es lanzar un comando en linux que me devuelva los pid de los servicios de apache asi como su request.

Luego desde volcaría lo que me devuelva ese comando al buffer de php y con eso ya podría saber las descargas activas para ese archivo.

No sé si estoy pidiendo un imposible, pero yo diría que no, hace tiempo que no toco linux.

Un saludo.

Última edición por yoseman1; 20/10/2010 a las 11:46
  #2 (permalink)  
Antiguo 21/10/2010, 12:27
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Saber descargas simultaneas de archivo usando pids de apache

Sinceramente no sé si tu idea funcionará, pero contestando a la pregunta concreta, podés saber los PID rápidamente ejecutando:

ps -ef (para saber los procesos actuales)
grep apache (o httpd, para filtrar y obtener solamente los procesos de apache)
awk '{print $2}' (para obtener solamente la segunda columna de la salida, que es el PID)
Código:
ps -ef | grep httpd | awk '{print $2}'
Seguramente se pueda hacer más fácil (por ejemplo, usar la opción -u de ps que te permite indicar el usuario cuyos procesos querés ver) pero eso funciona para obtener los PID.
No hay ningún comando del sistema que te diga qué está haciendo ese PID, sin embargo.

Una forma de solucionar el problema sería registrar en la BBDD cada IP que inicie una descarga, luego usar netstat para ver si esa IP tiene una conexión al puerto 80 del servidor.
Mientras esa conexión exista, quizás puedas asumir que la descarga está activa (ejecutando el netstat cada x minutos o segundos). El "quizás" viene dado porque puede suceder que la descarga haya terminado pero el usuario siga cargando páginas del sitio, por lo que la conexión seguiría apareciendo.

Otra opción: lsof. Te puede decir qué procesos (en tu caso, cuántos ) tienen un cierto archivo abierto. Si encontrás 10 procesos de apache que tienen el archivo abierto, entonces hay 10 descargas. No sé qué tan cierto o seguro sea esto, pero es otra opción a investigar


Saludos.
  #3 (permalink)  
Antiguo 23/10/2010, 09:58
 
Fecha de Ingreso: octubre-2010
Mensajes: 19
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Saber descargas simultaneas de archivo usando pids de apache

Hola,

Muchas gracias por tu respuesta me has ayudado mucho.

A ver si consigo algo.

Si lo consigo pondré aqui la respuesta, porque puede ser que le serva esto a alguien.

Un saludo.

Etiquetas: apache, descargas
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 09:16.