リモート イメージの getimagesize パフォーマンスの高速化
Getimagesize は、リモート イメージのサイズを決定するためによく使用されます。ただし、大量の画像を扱う場合は、時間がかかることがあります。
より高速なアプローチには、file_get_contents を使用して画像データの一部を取得し、それを分析してサイズを取得することが含まれます。このメソッドは、画像全体をロードするオーバーヘッドを回避します。
レンジャー関数を使用してこの手法を実装する方法の例を次に示します。
<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 中国語 Web サイトの他の関連記事を参照してください。