From 9341fe9142b47e3e4221338f62a26607c4e1969c Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Mon, 11 Jan 2016 21:56:04 +0000 Subject: [PATCH] Perf issue sur les filtres images appliques sur des images distantes en 404 : [(#VAL{http://example.org/fichier_inexistant.png}|image_reduire{64,64})] provoquait 3 operations file_exists sur http://example.org/fichier_inexistant.png.src que PHP interprete en faisant 3 hits http sur le fichier sauf si PHP bloque ce type d'operation. --- ecrire/inc/filtres_images_lib_mini.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ecrire/inc/filtres_images_lib_mini.php b/ecrire/inc/filtres_images_lib_mini.php index a7852db42e..bdeb01df58 100644 --- a/ecrire/inc/filtres_images_lib_mini.php +++ b/ecrire/inc/filtres_images_lib_mini.php @@ -605,8 +605,8 @@ function _image_gd_output($img, $valeurs, $qualite = _IMG_GD_QUALITE) { function reconstruire_image_intermediaire($fichier_manquant) { $reconstruire = array(); $fichier = $fichier_manquant; - while ( - !@file_exists($fichier) + while (strpos($fichier,"://")===false + and !@file_exists($fichier) and lire_fichier($src = "$fichier.src", $source) and $valeurs = unserialize($source) and ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...) @@ -642,7 +642,8 @@ function reconstruire_image_intermediaire($fichier_manquant) { * Chemin du fichier d'image calculé **/ function ramasse_miettes($fichier) { - if (!lire_fichier($src = "$fichier.src", $source) + if (strpos($fichier,"://")!==false + or !lire_fichier($src = "$fichier.src", $source) or !$valeurs = unserialize($source) ) { return; @@ -696,7 +697,8 @@ function image_graver($img) { $fichier = $img; } # si jamais le fichier final n'a pas ete calcule car suppose temporaire - if (!@file_exists($fichier)) { + # et qu'il ne s'agit pas d'une URL + if (strpos($fichier,"://")===false and !@file_exists($fichier)) { reconstruire_image_intermediaire($fichier); } ramasse_miettes($fichier); -- GitLab