リモートPCのディレクトリの内容をインデックスする必要があるWindows XP SP3で動作するPHP 5.3.4アプリケーションがあります。私が索引付けしている最大のディレクトリには約18,000の項目が含まれています。特定の項目を含むディレクトリを見つける最速の方法
この呼び出しでは、\\somepc.mycorp.com\foo\mydir\bar\zoo.zip
のような項目が検索されます。
// look in all the directories in \\somepc.mycorp.com\foo for directories containing a file \bar\zoo.zip
$item_list = GetFileList('\\\\somepc.mycorp.com\\foo', '\\bar\\zoo.zip');
それは次のように実装されています。残念ながら
function GetFileList($base_dir, $path_mask)
{
$result= array();
if ($handle = opendir($base_dir))
{
while (false !== ($entry = readdir($handle)))
{
// only add items that match the mask we're looking for
if ($entry != "." &&
$entry != ".." &&
file_exists($base_dir.'\\$entry\\$path_mask'))
{
array_push($result, $entry);
}
}
closedir($handle);
}
return $result;
}
、最大のディレクトリ構造のため、この操作は時間を引き継ぐことができます。フィルタを削除して、配列に表示されているすべての項目を挿入すると、数秒で終了します。
これを行う方法はありますか?
とリモートPCのOSは何ですか? –
@Ivan - Windowsファイル共有。 (OSはおそらくいくつかのWindowsサーバーの亜種です。私は確かではありません...おそらく2003年のサーバー) – PaulH