加速远程图像的 getimagesize 性能
Getimagesize 通常用于确定远程图像的尺寸。然而,在处理大量图像时,它可能会变得非常耗时。
更快的方法是使用 file_get_contents 获取一小部分图像数据并对其进行分析以检索大小。此方法避免了加载整个图像的开销。
以下是如何使用 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>
为了演示改进的性能,请考虑以下示例:
<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>
在测试中,获取前 32 KB 图像数据提供了令人印象深刻的性能提升:
640 x 480 (0.20859s)
这种方法显着减少了确定远程图像大小所需的时间,使其成为处理大型数据集的理想选择。
以上是如何优化远程图像的 getimagesize 性能?的详细内容。更多信息请关注PHP中文网其他相关文章!