2012-01-23 3 views
-1

の画像を高速で取得する方法私は、特定のURLのウェブサイトをスキャンしてすべての画像を取得する仕組みを構築しようとしています。現在私はのスローであるsimple_html_domを使用しています。ウェブサイトからサイズ> x

localhostからウェブサイトをスキャンすると、約30秒〜1分かかります。私がする必要がどのような

は次のとおりです。

  1. 負荷URL。
  2. 画像をスキャンする(特定のサイズx>幅のものがある場合)
  3. これらを印刷します。

私が探しているのは最速です。

+0

これは簡単な作業ではありません。 PHPでは、どんな場合でも、最も速い方法です。 – DaveRandom

+0

file_get_contentsとpreg_match_allは、画像のリモートページを解析するというトリック – Geert

+0

を行う必要があります:http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662 – Gordon

答えて

3

がありません。ウェイです。 ネットワークの待ち時間を短縮することはできません。 イメージのサイズを検出することを避けることはできません。 残りの操作は、すでにプロセスのごくわずかな部分です。

+0

調査後、私はそれが...あなたが画像を探しているサイトでjavascriptを使用する場合はどうなると思いますか? ? –

+0

大きな問題ドメインの改善のための部屋に基づいて、この答えはあまりにも単純です。 – Elliott

1

あなたがそれをダウンロードする前に、画像サイズを取得するには、サーバーにHEADリクエストを送信することにより、ネットワーク全体のスループットを減らすことができるので、他の答えは単純化された - すぐにサイズ< xはイメージのため、あなたに、ほぼすべての帯域幅のを節約します。

関連するページのサイズによっては、イメージURLの抽出に使用される文字列操作の選択も重要です。 PHPは、それが必要とするニーズにはまったく適していますが、終わりにはやや遅く、通訳された言語ですが、ときどき大規模な部分文字列を時々遅らせるというルーチンがあります。この場合、単純なライブラリを使用しても、それを完全に解析することは過剰です。

私が極端な長さの画像しかダウンロードしない理由は、一部のPHPメソッドは非常に遅いです。 copy()を使用してファイルをダウンロードし、rawソケットまたはcURLを使用して同じことを行うと、copy()は時には少なくとも2倍の時間がかかることがあります。

したがって、転送方法の選択と解析方法の選択の両方が顕著な効果を持ちます。

+0

アドバイスありがとう、バート:) – Elliott

関連する問題