Maison >développement back-end >tutoriel php >Comment puis-je optimiser les performances de getimagesize pour les images distantes ?

Comment puis-je optimiser les performances de getimagesize pour les images distantes ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 08:06:30405parcourir

How can I optimize getimagesize performance for remote images?

Accélération des performances de getimagesize pour les images distantes

Getimagesize est souvent utilisé pour déterminer les dimensions des images distantes. Cependant, lorsqu'il s'agit de traiter un grand nombre d'images, cela peut prendre beaucoup de temps.

Une approche plus rapide consiste à récupérer une petite partie des données de l'image à l'aide de file_get_contents et à l'analyser pour récupérer la taille. Cette méthode évite la surcharge liée au chargement de l'image entière.

Voici un exemple de mise en œuvre de cette technique à l'aide de la fonction ranger :

<code class="php">function ranger($url) {
    $headers = ["Range: bytes=0-32768"];

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($curl);
    curl_close($curl);

    return $data;
}</code>

Pour démontrer les performances améliorées, considérons l'exemple suivant :

<code class="php">$start = microtime(true);

$url = "http://news.softpedia.com/images/news2/Debian-Turns-15-2.jpeg";

$raw = ranger($url);
$im = imagecreatefromstring($raw);

$width = imagesx($im);
$height = imagesy($im);

$stop = round(microtime(true) - $start, 5);

echo $width." x ".$height." ({$stop}s)";</code>

Lors des tests, la récupération des 32 premiers Ko de données d'image a fourni des gains de performances impressionnants :

640 x 480 (0.20859s)

Cette approche réduit considérablement le temps nécessaire pour déterminer la taille des images distantes, ce qui le rend idéal pour traiter de grands ensembles de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn