我有一个脚本,它扫描顶级目录,并返回其内容(这些目录本身就是所有目录)=> $scan = scandir("$path");
。我正在返回的嵌套目录不断由外部Python脚本创建。
我希望能够排除上次修改不到10分钟前的子目录。我不想从内存中删除目录(即我不想使用rmdir()
),但我想做的事与Python的list.remove()
函数基本相同。我只想能够从数组中删除这些元素。
是否有可以执行此操作的功能?
到目前为止,我用Google搜索的所有内容都为我提供了一种从服务器上删除目录的方法。
编辑:以下是该脚本的示例:
ls.php
$path = $_GET['path'];
$regex=$_GET["regex"]; // just a string passed in which selects directories matching a naming convention
$scan = scandir($path);
foreach ($scan as $child) {
if (is_dir("$path/$child")) {
if (preg_match("/$regex/",$child)) {
if (!preg_match("/^\./",$child)) {
$nested[]=$child;
}
}
}
}
我当前的脚本非常简单。返回的内容是所有目录(不包括./和../),我只想知道如何删除不到10分钟前修改过目录的数组元素。
答案 0 :(得分:0)
您可能希望使用filemtime()
和strtotime()
来解决问题,例如:
# Assign now
$now = strtotime('now');
# Loop scanned directory
foreach ($scan as $child) {
# Assign dir name
$dir = $path.'/'.$child;
# Not a directory, skip
if(!is_dir($dir))
continue;
# Not match, skip
if(!preg_match("/$regex/",$child))
continue;
# If dots, skip
if(preg_match("/^\./",$child))
continue;
# Take now minus the last modified time of the file
$diff = ($now - filemtime($dir));
# See if the difference is more than 600 seconds (10 minutes)
if($diff > 600)
continue;
# Assign if less than 10 minutes
$nested[] = $child;
}