J'ai un système avec une page download.php. La page prend et id et charge un fichier basé sur à partir de l'enregistrement DB, puis le sert. J'ai remarqué quelques cas où les fichiers sont demandés plusieurs fois dans de courtes périodes (20ms). Des temps qui sont trop rapides pour l'apport humain. Il y a beaucoup de cas où le téléchargeur fonctionne bien. Cependant, en regardant de plus près l'utilisation du téléchargeur, j'ai remarqué un comportement intéressant.Fichier de service Apache/PHP plusieurs fois
Par exemple, l'adresse IP xxx.xxx.xxx.xxx (qui appartient à une gamme appartenant à xxxxxx.de en Allemagne) est arrivée sur le site via Google. Ils ont parcouru autour et sont venus à la page http://site.com/xxxx/press+125.php Là ils ont émis une demande pour /download.php?id=/ZZ/n+aH55Y= (un pdf) à 9:04:23 AM. Cela seul n'est pas un gros problème. Cependant, ce qui est intéressant, c'est que le serveur semble avoir été très préoccupé par cette requête. Dans les journaux, la requête se termine d'abord entre 09:09:48 et 09:10:00. Il semble que l'utilisateur ait dû se lasser d'attendre pendant ce temps et a demandé le document deux fois de plus. Entre 09:14:47 et 09:15:00 la même requête réapparaît, sauf à partir de 09:04:43, 20ms plus tard que la première requête. Puis il apparaît une troisième fois, avec une demande qui a commencé à 09:05:06 complétant entre 09:19:55 et 09:19:58!
Je me méfie de ce document. En regardant à travers les journaux, je vois d'autres cas où le serveur prend un peu de temps pour gérer ce fichier spécifique. Consultez cette liste de demandes de zzz.zzz.zzz.zzz [différente de celle ci-dessus] pour le fichier /download.php?id=/ZZ/n+aH55Y= (le même document que précédemment):
Demande de temps Temps Complet 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
Donc, quelque chose se passe définitivement. Qu'il s'agisse de ce document spécifique triant le serveur, du code de la page download.php, ou si nous ne voyons que la preuve d'une surcharge au niveau du serveur alors qu'il se joue en temps réel, je ne suis pas encore sûr.
En toute justice, il existe d'autres exemples de personnes qui téléchargent /download.php?id=/ZZ/n+aH55Y= (le même PDF) sans erreur. Cependant, il est intéressant que les processus multiples semblent se produire avec ce seul fichier, et seulement quand il est accessible via la page http://site.com/press+125.php. Il est nécessaire d'examiner plus avant s'il y a quelque chose qui ne va pas dans le code qui fait que le système déclenche plusieurs demandes de téléchargement qui occupent le serveur.
Je ne sais pas si cette presse + 125.php est un trou de lapin, mais il y a une consistance étrange.
Des idées? Je suis totalement à court d'idées. Apache a atteint son maximum? Des choses comme ça.
///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;
}
}
}
Avez-vous regardé sur le disque pour voir la taille de ce PDF? Est-ce beaucoup plus gros que tous les autres fichiers? Aussi, êtes-vous sur un serveur dédié ou un hébergement partagé? – Paolo
c'est à peu près la même chose. C'est une boîte dédiée. – easement