Web ページから画像をより速く取得する方法
特定の URL から画像を取得する場合、特定の基準を満たすとプロセスの効率が向上します。 。この記事では、幅と高さが 200 ピクセル以上の画像の抽出に焦点を当て、時間のかかるデフォルトの方法と比較してプロセスを高速化することを目的としています。
より高速な画像取得
従来のアプローチでは、ソース URL から各画像を順番に取得し、getimagesize() を使用してそのサイズを確認します。ただし、この方法は時間がかかり、リソースが大量に消費される可能性があります。速度を最適化するには、次の改善点を検討してください。
1.並列処理の活用:
curl_multi_init() 関数を利用して、複数の同時 HTTP リクエストを起動し、画像を並行して取得します。このアプローチでは、利用可能な帯域幅を活用することで応答時間が大幅に短縮されます。
2.画像をローカルに保存:
リモート画像で getimagesize() を呼び出さないようにします。代わりに、イメージをローカルの一時ディレクトリにダウンロードし、そこでサイズを決定します。この手順により、追加の HTTP リクエストの送信に伴う遅延が解消されます。
追加の考慮事項:
パフォーマンスの向上:
上記の手法を実装することで、画像検索を劇的に高速化できます。次の例を考えてみましょう:
<code class="php">// Start the timer $start = microtime(); // Fetch images using curl_multi_init $res = imageDownload($nodes, 200, 200); // Stop the timer and display elapsed time echo "<h1>", microtime() - $start, "</h1>"; function imageDownload($nodes, $maxHeight = 0, $maxWidth = 0) { // ... (curl_multi_init code here) ... // ... (curl_multi_exec code here) ... $res = array(); // ... (image processing code here) ... return $res; }</code>
サンプル出力:
Array ( [0] => temp/img8cdd64d686ee6b925e8706fa35968da4.gif [1] => temp/img5811155f8862cd0c3e2746881df9cd9f.gif [2] => temp/imga597bf04873859a69373804dc2e2c27e.jpg [3] => temp/img0914451e7e5a6f4c883ad7845569029e.jpg [4] => temp/imgb1c8c4fa88d0847c99c6f4aa17a0a457.jpg [5] => temp/img36e5da68a30df7934a26911f65230819.jpg [6] => temp/img068c1aa705296b38f2ec689e5b3172b9.png [7] => temp/imgfbeca2410b9a9fb5c08ef88dacd46895.png ) 0.076347
この改善されたアプローチにより、元の実装と比較してパフォーマンスが大幅に向上し、処理時間が短縮されます。約 40 秒です。
以上が## Web ページからの画像取得を高速化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。