1
if (is_dir($dir)) {
  if($handle = opendir($dir)) { 
        while($file = readdir($handle)) {
        // Break the filename by period; if there's more than one piece, grab the last piece.
        $parts = explode(".", $file); 
        if (is_array($parts) && count($parts) > 1) {
            $ext = end($parts);
            // If it's an image that we want, echo the code.
          if ($ext == "png" OR $ext == "PNG" OR $ext == "jpg" OR $ext == "JPG" OR $ext == "jpeg" OR $ext == "JPEG" OR $ext == "gif" OR $ext == "GIF")
            echo "<img src=\"$path/$file\" />";
      } 
    }
    closedir($handle);
  }
...

私はWordpressでそれを使用しています.ページの読み込みはかなり遅いですが、多くの画像があるためかもしれません. パフォーマンス上の理由で嫌われるようなことをしていないことを確認したかっただけです。

4

3 に答える 3

3

さて、あなたはそれをより効率的にすることができます:

$extension = strtoupper(pathinfo($file, PATHINFO_EXTENSION));  
if (in_array($extension(array('PNG', 'JPG', 'JPEG', 'GIF'))) {
    echo '<img src="$path/$file" />'; 
}  

または、opendir / readdir / closedir ...ではなくglob()を使用することもできます。これは、ファイル拡張子のパターンを指定できるためです。

しかし、それについて本質的に遅いものは何もありません

于 2010-12-14T08:43:35.537 に答える
3

パフォーマンスに影響を与える可能性のある多くの構成値があるため、opendir が遅いと正確に言うことはできません。

あなたがすべきことは、アプリ内のコードのセグメントを次のようにベンチマークすることです:

$start = microtime(true);
//Your Code
$end = (microtime(true) - $start);

処理にかかった時間を正確に確認できます。

その他のヒント:

$ext == "png" OR $ext == "PNG"冗長です。使用$ext = strtolower(end($parts));してから使用する必要があります。

$ext == "png" OR $ext == "jpg" OR $ext == "jpeg" OR $ext == "gif"

さらに良いことに、あなたはただ使うことができます

if(in_array($ext,array("png","jpg","jpeg","gif"))){}

また、使用する代わりにOR、 or 条件に二重パイプ演算子を使用します: ||

于 2010-12-14T08:46:31.067 に答える
2

Firefoxの「quickjava」プラグインを入手してください。

このようにして、画像を無効にし(右隅にある青いIをクリックして赤に変わる)、画像なしでWebページのパフォーマンスをテストできます。

于 2010-12-14T08:40:29.623 に答える