2012-02-20 9 views
-1

私はかなり遅いです。どうすればスピードアップできますか?phpファイルの読み込みコードを最適化

(それがディレクトリをスキャンして、foldernamesのうち、ヘッダを行い、内からPDFファイルを取得し、リストに追加します)

$directories= array_diff(scandir("../pdfArchive/subfolder", 0), array('..', '.')); 
    foreach ($directories as $v) { 
    echo "<h3>".$v."</h3>"; 
    $current = array_diff(scandir("../pdfArchive/subfolder/".$v, 0), array('..', '.')); 
    echo "<ul style=\"list-style-image: url(/images/pdf.gif); margin-left: 20px;\">"; 
    foreach ($current as $vone) { 
     echo "<li><a target=\"blank\" href=\"../pdfArchive/subfolder/".$vone."\">".str_replace(".pdf", "", $vone)."</a>"; 
     echo "</li><br>"; 
    } 
    echo "</ul>"; 
    } 
+0

どのように遅いと判断しましたか? –

+0

実行にはしばらく時間がかかります。 –

+0

ねえ、なぜマイナス1? –

答えて

2

私はとき、アレイどのくらいの速array_diff()があるか分かりません非常に大きいですが、別の小切手を簡単に追加して、 '。' '..'は返された名前ではありませんか?それ以外

、私は本当に何も悪いことが見ることができません。

あなたが遅い現在のアプローチを検討するためにテストしたのは何

3

array_diff()を使用して現在のディレクトリと親ディレクトリを除外しないでください。DirectoryIteratorまたはglob()などを使用して、それが正しいかどうかをテストしてください。または..経由の文

グロブは()

ライン/機能は、ここで

0

ゆっくり実行している正確に何を見るためにあなたのコードをプロフィールあなたがループのディレクトリのみを取得することを可能にするフラグを持っている場合私が使用しているコードのスニペットをphp.netから適用しました。これは非常に基本的なものであり、指定されたディレクトリを通り、そこに含まれるファイルをリストします。

// The @ suppresses any errors, $dir is the directory path 
if (($handle = @opendir($dir)) != FALSE) { 
    // Loop over directory contents 
    while (($file = readdir($handle)) !== FALSE) { 
     // We don't want the current directory (.) or parent (..) 
     if ($file != "." && $file != "..") { 
      var_dump($file); 
      if (!is_dir($dir . $file)) { 
       // $file is really a file 
      } else { 
       // $file is a directory 
      } 
     } 
    } 
    closedir($handle); 
} else { 
    // Deal with it 
} 

あなたは、私が上に示してきたように、フォルダを識別するためにis_dirを使用して、サブディレクトリの上に再帰的にするために、この更を適合させることができます。

+0

チップをありがとう。私はもっ​​と直接の答えを探していましたが –

関連する問題