2010-02-05 9 views
5

Tengo un sistema con una página download.php. La página toma e identifica y carga un archivo basado en el registro de base de datos y luego lo muestra. Me he dado cuenta de un par de instancias donde los archivos se solicitan varias veces en breves espacios de tiempo (20 ms). Tiempos que son demasiado rápidos para el aporte humano. Hay muchas instancias donde el descargador funciona bien. Sin embargo, al observar de cerca el uso del descargador, sí observé un comportamiento interesante.Archivo de servicio de Apache/PHP varias veces

Por ejemplo, la dirección IP xxx.xxx.xxx.xxx (que es una en un rango propiedad de xxxxxx.de en Alemania) llegó al sitio a través de Google. Miraron alrededor y luego llegaron a la página http://site.com/xxxx/press+125.php. Allí emitieron una solicitud para /download.php?id=/ZZ/n+aH55Y= (un PDF) a las 9:04:23 AM. Eso solo no es gran cosa. Sin embargo, lo interesante es que el servidor parece haber estado bastante preocupado por atender esa solicitud. En los registros, la solicitud se completa primero entre las 9:09:48 y las 9:10:00. Parece que el usuario debe haberse cansado de esperar durante ese tiempo y solicitó el documento dos veces más. Entre las 09:14:47 y las 09:15:00, vuelve a aparecer la misma solicitud, excepto que es de 9:04:43 a.m., 20 ms después de la primera solicitud. Luego aparece una tercera vez, con una solicitud que comenzó a las 09:05:06 completando entre las 09:19:55 y las 09:19:58!

Sospecho de ese documento. Al mirar a través de los registros veo otras instancias en las que el servidor tarda un poco en manejar ese archivo específico. Consulte esta lista de solicitudes de zzz.zzz.zzz.zzz [diferentes de las anteriores] para el archivo /download.php?id=/ZZ/n+aH55Y= (el mismo documento anterior):

Solicita tiempo Tiempo completo 04:32:43 04:33:36 04:32:50 04:33:36 04:32:51 04:33:38 04:33:05 04:33:38 04:33 : 34 04:33:42 04:33:05 04:33:42

Algo definitivamente está pasando. Ya sea que tenga que ver con este documento específico para tropezar con el servidor, el código de la página download.php, o si solo estamos viendo evidencia de alguna sobrecarga de nivel de servidor mientras se desarrolla en tiempo real, aún no estoy seguro.

Para ser justos, hay otras instancias de gente descargando /download.php?id=/ZZ/n+aH55Y= (el mismo PDF) sin error. Sin embargo, es interesante que los procesos múltiples solo parezcan suceder con este archivo, y solo cuando se accede a través de la página http://site.com/press+125.php. Lleva a cabo más investigaciones si hay algo mal dentro del código que hace que el sistema active varias solicitudes de descarga que ocupan el servidor.

No sé si esta prensa + 125.php es un agujero de conejo, pero hay un extraño consicence.

¿Alguna idea? Estoy totalmente sin ideas. Apache al máximo? Ese tipo de cosas.

///DOWNLOAD.php 
$file = new files(); 
$file->comparison_filter("id", "=", $id); //sql to load 
if ($file->load()) { 
    $file->serve(); 
} 


//FILES 
function serve() { 
     if ($this->is_loaded) { 
      if (file_exists($this->get_value("filename"))) { 
       if ($this->get_value("content_type") != "") { 
        header("Content-Type: " . $this->get_value("content_type")); 
       }  
       header("Content-Length: " . filesize($this->get_value("filename"))); 
       if ($this->get_value("flag_image") == 0 || $this->get_value("flag_image") == false) { 
        header("Cache-Control: private"); 
        header("Content-Disposition: attachment; filename=" . urlencode($this->get_value("original_filename"))); 
       } 

       set_time_limit(0); 
       @readfile($this->get_value("filename")); 

       exit; 
      } 
     } 
} 
+0

¿Ha buscado en el disco para ver qué tan grande es realmente este PDF? ¿Es significativamente más grande que cualquiera de los otros archivos? Además, ¿está en un servidor dedicado o en un servidor compartido? – Paolo

+0

es más o menos lo mismo. Es una caja dedicada. – easement

Respuesta

0

Utilice una red CDN para descargar archivos. Manejarán esto por usted, y además le proporcionarán ancho de banda y escalabilidad. No más bloqueos en su servidor. http://www.reelseo.com/free-cdn-velocix/

+0

CDN no es una opción. Algunos de los artículos son propietarios y confidenciales. Saqué un código que detecta la autenticación. Además, hay un administrador para cargar los archivos. – easement

0
  1. ¿Ha analizado cabeceras referente en la solicitud HTTP User-Agent y?
  2. ¿Por qué no se sirven todos los archivos estáticos de apache o lo que sea que tenga? Si desea realizar un seguimiento de las estadísticas de descarga de , puede hacer una redirección de su secuencia de comandos al archivo estático.
+0

Hay un seguimiento de autenticación. Hay un acierto en el DB que busca el país y la región y luego lo escribe en un archivo de registro. Necesitamos capturar quién está descargando los archivos también. – easement

0

Agregue '% D% X' a su configuración de registro: supongo que responderá a muchas de sus preguntas.

C.

Cuestiones relacionadas