温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to delete the old files from a directory if a condition is true in PHP?
php delete-file

其他 - 如果条件在PHP中成立,如何从目录中删除旧文件?

发布于 2020-03-29 21:52:14

我只想在一个文件夹中保留10个最新文件,然后删除其他文件。我创建了一个脚本,如果文件号大于10,该脚本仅删除最旧的脚本。如何使该脚本适应我的需要?

$directory = "/home/dir";

// Returns array of files
$files = scandir($directory);

// Count number of files and store them to variable..
$num_files = count($files)-2;
if($num_files>10){

    $smallest_time=INF;

    $oldest_file='';

    if ($handle = opendir($directory)) {

        while (false !== ($file = readdir($handle))) {

            $time=filemtime($directory.'/'.$file);

            if (is_file($directory.'/'.$file)) {

                if ($time < $smallest_time) {
                    $oldest_file = $file;
                    $smallest_time = $time;
                }
            }
        }
        closedir($handle);
    }  

    echo $oldest_file;
    unlink($oldest_file);   
}

查看更多

提问者
user12775148
被浏览
17
mitkosoft 2020-01-31 19:06

基本的脚本给你的想法。将所有文件及其时间推入一个数组,按时间顺序降序排列并走入低谷。if($count > 10)说什么时候应该开始删除,即当前保留最新的10。

<?php
    $directory = ".";

    $files = array();
    foreach(scandir($directory) as $file){
        if(is_file($file)) {

            //get all the files
            $files[$file] = filemtime($file);
        }
    }

    //sort descending by filemtime;
    arsort($files);
    $count = 1;
    foreach ($files as $file => $time){
        if($count > 10){
            unlink($file);
        }
        $count++;
    }