删除超时文件夹

php

浏览数:328

2019-1-7

<?php
/**
 * 删除文件夹最后一次访问时间在7天之前的文件夹
 * 适用于日志文件夹等
 */
$base_dir = '/path';
$dir_arr = scandir($base_dir);
$now = time();
$expire = 86400 * 7;
foreach ($dir_arr as $dir_name) {
    if ('.' !== $dir_name && '..' != $dir_name) {
        $real_path = $base_dir . '/' . $dir_name;
        if (($now - filectime($real_path)) > $expire) {
            rm_dir($real_path);
        }
    }
}

/**
 * PHP提供的rmdir函数,只能删除非空的文件夹,所以只能递归删除目录内的文件之后,再删除文件夹
 * @param $dir
 */
function rm_dir($dir)
{
    $file_lists = scandir($dir);
    foreach ($file_lists as $filename) {
        if ('.' !== $filename && '..' != $filename) {
            $curr_file = $dir . '/' . $filename;
            if (is_dir($curr_file)) {
                rm_dir($curr_file);
            } else {
                unlink($curr_file);
            }
        }
    }
    rmdir($dir);
}