J'ai actuellement un script qui utilise curl pour vérifier la taille du fichier d'environ 3000 images chaque fois qu'un utilisateur visite la page .. c'est parce que chaque fois que le contenu pourrait changer.PHP quelque chose de plus rapide que curl pour vérifier la taille du fichier d'image à distance environ 3000 fois?
Si elle correspond à la taille de 7442 octets, elle modifie le chemin de l'image, si ce n'est pas le cas, conserve sa source. L'URL de l'image est stockée sur $ variable, mysql, et à la fois le fichier xml distant et local. Mais l'image est toujours stockée à distance.
$image = 'http://remoteserver.com/user22.jpg';
//Check if all thumbs are ok real and available
$ch = curl_init($image);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
$data = curl_exec($ch);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
if($size == 7442){
echo '<img src="https://www.newdomain.com/tmp.jpg" height="190.11"/></a>';
} else {
echo '<img src="' . $image . '" alt="' . $user . '" /></a>';
}
Quand il est activé la page prend environ 40 secondes pour charger, quand il a commenté, il faut 3 secondes. Mais il est exécuté chaque fois qu'un utilisateur visite la page web ou si j'exécute curl avant d'ajouter des données à mysql et change d'adresse dans mysql, cela retarde énormément le chargement de cette information sur mysql et ne montre donc pas toutes les images.
Je sais qu'il y a beaucoup de choses en fonction de cette vérification, des temps de réponse du serveur, de la configuration php, etc. Mais j'ai vraiment besoin de ce fichier d'image pour fonctionner et ne pas avoir besoin de 40 secondes chaque fois qu'un utilisateur visite la page.
Une suggestion/aide? Merci
Exécuter en tant que processus d'arrière-plan, et non dans le cadre d'une requête Web –
Vous pouvez utiliser memcache ou quelque chose pour stocker la collection de redirections d'URL d'image. Un service d'arrière-plan planifié (script PHP) peut être exécuté périodiquement pour vérifier la taille des fichiers et ajouter les URL redirigées à memcache. Vous obtenez l'URL de l'image pour une fonction qui regarde dans memcache et renvoie la clé si elle est trouvée ou retourne l'URL d'origine si ce n'est pas le cas. – jcorry
Merci Mark Baker et Jcorry. Les URL d'origine sont en fait stockées dans mysql, mais seulement l'url, pas d'information sur la taille. Cela permettrait de bannir le besoin de memcache? –