ホームページ > バックエンド開発 > PHPチュートリアル > ## Web ページからの画像取得を高速化するにはどうすればよいですか?

## Web ページからの画像取得を高速化するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-27 16:17:29
オリジナル
1054 人が閲覧しました

##  How Can I Speed Up Image Retrieval from a Webpage?

Web ページから画像をより速く取得する方法

特定の URL から画像を取得する場合、特定の基準を満たすとプロセスの効率が向上します。 。この記事では、幅と高さが 200 ピクセル以上の画像の抽出に焦点を当て、時間のかかるデフォルトの方法と比較してプロセスを高速化することを目的としています。

より高速な画像取得

従来のアプローチでは、ソース URL から各画像を順番に取得し、getimagesize() を使用してそのサイズを確認します。ただし、この方法は時間がかかり、リソースが大量に消費される可能性があります。速度を最適化するには、次の改善点を検討してください。

1.並列処理の活用:

curl_multi_init() 関数を利用して、複数の同時 HTTP リクエストを起動し、画像を並行して取得します。このアプローチでは、利用可能な帯域幅を活用することで応答時間が大幅に短縮されます。

2.画像をローカルに保存:

リモート画像で getimagesize() を呼び出さないようにします。代わりに、イメージをローカルの一時ディレクトリにダウンロードし、そこでサイズを決定します。この手順により、追加の HTTP リクエストの送信に伴う遅延が解消されます。

追加の考慮事項:

  • URL に明示的な「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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート