我有一个目录,里面有大约100个子目录(嵌套的,有3-4个深度)。我需要一个小的PHP脚本,将简单地输出11最近添加(或修改,因为他们都是pdf的)文件的列表,与每个之间的一个简单的<br />,每个都被链接到他们的网址。
我已经找到了一些可以做1或全部的脚本,但不知道如何开始具体限制到11,或者如何应用确切的href。
我的另一个问题是这个脚本的服务器使用情况,因为它将被放在一个登录页面上,该页面将看到低使用率,但是每个用户都会看到它。
任何关于资源的想法,或者从哪里开始,都将不胜感激!
发布于 2012-06-12 01:38:36
未经过测试,但它应该可以工作:
<?php
function getFiles($dir)
{
$arr=scandir($dir);
$res=array();
foreach ($arr as $item)
{
if ($item=='..' || $item=='.'){continue;}
$path=$dir.'/'.$item;
if (is_dir($path))
{
$res=array_merge($res,getFiles($path));
}
else
{
$res[$path]=filemtime($path);
}
}
return $res;
}
$files=getFiles('directory');
arsort($files);
$files=array_slice(array_keys($files),0,11);
foreach ($files as $file)
{
echo '<a href="'.$file.'">'.$file.'</a><br />';
}
?>发布于 2012-06-12 02:05:10
提供一个基于web的上传界面会更有意义。这样你就可以跟踪每一次新上传的内容。
好了。要获取最新的11文件(在整个系统或特定类别/文件夹中),只需查询数据库。
如果你的用户也需要删除文件的能力,只需添加该功能的web界面即可。不删除文件,只需在表中将其标记为“隐藏”即可。
除了解决迫在眉睫的问题外,它还将提供额外的可能性,如适度、所有权归属和搜索。还有更多。
发布于 2012-06-12 02:13:55
使用RecursiveIterator。这就是它设计的目的。我添加了一个额外的迭代器,名为sortedIterator,它扩展了SPLHeap,按照getMTime()排序,这是目录的修改时间。
将$path更改为目录的完整路径。
$path = '.';
class sortedIterator extends SplHeap
{
public function __construct(Iterator $iterator)
{
foreach ($iterator as $item) {
$this->insert($item);
}
}
public function compare($b,$a)
{
return strcmp($a->getMTime(), $b->getMTime());
}
}
$recursive = new RecursiveDirectoryIterator($path);
$sortByTime = new sortedIterator($recursive);
$i = 0;
foreach ($sortByTime as $file) {
if($file->isDir()){
$dirs[] = $file->getFilename();
if($i++ == 9){
break;
}
}
}
print_r(implode("<br />", $dirs));编辑,如果您想要创建时间,请将getMTime更改为getCTime。
https://stackoverflow.com/questions/10984775
复制相似问题