使用mtime<删除所有目录10分钟前从一个阵列

时间:2017-11-04 01:42:07

标签: php arrays

我有一个脚本,它扫描顶级目录,并返回其内容(这些目录本身就是所有目录)=> $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分钟前修改过目录的数组元素。

1 个答案:

答案 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;
}