读取这些子目录中的文件夹子目录和文件的最佳方法是什么?

时间:2012-04-06 04:16:36

标签: php glob

我有一个图像文件夹,其中包含每个图像专辑的子目录,如

  • 图片
  • 图片/ Album1
  • 图片/ Album2

在PHP文件中 我使用GLOB读取相册的缩略图,为每张专辑创建一个链接,以读取图像

下的所有文件夹
$dir=glob('images/*');
$dir_listing=array();
foreach($dir as $list)  
{
if(is_dir($list))
$dir_listing[]= (basename($list));
}   

$thumbs=glob('images/thumbnails/*');
$count=0;

foreach($thumbs as $th )
{
echo" $dir_listing <br/>"; 
echo"<a href='$dir_listing[$count]' ><img src='$th' /> </a>";
    $count++;
}

我在每个页面加载时使用Glob来获取目录和图像列表。

  • 我想知道是否有更好的方法可以做到这一点。
  • 我还希望根据降序排序{最新文件和文件夹}的最后修改时间获取所有文件和文件夹的列表。

使用Glob是正确还是我们应该将子目录和文件保存在文本文件中并从中读取?

1 个答案:

答案 0 :(得分:0)

我无法确定是否有更好的方法可以做到这一点,但您的代码肯定会有效。

只有当目录中的文件数量相对较少(&lt; 10,000)时才使用glob()是正确的方法,因为如果yoy有很多文件,那么你可以得到一个“允许的内存大小为XYZ字节”筋疲力尽......“错误。在这种情况下,最好使用opendir();

if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
    // do something with the file
    // note that '.' and '..' is returned even
}
closedir($handle);

最后,在glob()上使用标志GLOB_NOSORT,这样最终结果就像它在目录中列出的那样,以防可能用于根据上次修改日期为您提供结果。

希望这有帮助。