我需要编写一个列出文件夹中所有子文件夹的函数。我已经添加了不包含文件的过滤器,但是该函数使用scandir()进行列举,这使应用程序非常缓慢。有没有替代scandir()的函数,即使是非本地的php函数?
function readDirectory($Directory,$Recursive = true)
{
if(is_dir($Directory) === false)
{
return false;
}
try
{
$Resource = opendir($Directory);
$Found = array();
while(false !== ($Item = readdir($Resource)))
{
if($Item == "." || $Item == "..")
{
continue;
}
if($Recursive === true && is_dir($Item))
{
$Found[] = readDirectory($Directory . $Item);
}else
{
$Found[] = $Directory . $Item;
}
}
}catch(Exception $e)
{
return false;
}
return $Found;
}
$offset = 0;
while(false !== ($Batch = ReadFilesByOffset("/tmp",$offset)))
{
//Use $batch here which contains 50 or less files!
//Increment the offset:
$offset += 50;
}
.
或 ..
,但是关于空索引的问题,我不确定你的意思。 - RobertPitt
stat()
,或者里面有成千上万个文件,否则它不应该那么慢。 - Marc B