PHP教程

PHP获取目录下最近修改的文件

文 / 管理员 来源 / 原创 阅读 / 250 1年前

为了方便打包源码部署到线上,写了个提取最近修改了哪些文件。

文件下载之后,放到项目运行目录,修改一下修改时间即可。

<?php

/**
 * PHP获取目录下最近修改的文件
 * 为了方便打包源码部署到线上,写了个提取最近修改了哪些文件
 * User: XC跃
 * Created time 2023-03-09
 * E-mail: 2323946929@qq.com
 */
declare (strict_types=1);

// 过滤的目录或文件
$packageFilter = [
    '.env', '.git', '.idea', '.vscode',
    'storage', 'vendor',
    '__package', 'package.php',
];

// 查询的目录
$root = dirname(dirname(__FILE__));
echo "查询目录:" . $root .  "<pre>";
$date = '2023-03-07';
echo "查询修改时间:" . $date .  "<pre>";

// 指定开始的时间
$checkTime = strtotime($date);

find($root, function (SplFileInfo $item, bool $isDir) use ($packageFilter, $root, $checkTime) {
    $filename = $item->getPathname();
    
    foreach ($packageFilter as $value) {
        // 分隔符替换
        //$value = str_replace(['\\', '/'], DIRECTORY_SEPARATOR, $value);
        //$value = __DIR__ . DIRECTORY_SEPARATOR . ltrim($value, DIRECTORY_SEPARATOR);
        if (strpos($filename, $value) !== false) {
            return;
        }
    }
    
    if ($checkTime > max($item->getMTime(), $item->getCTime())) {
        return;
    }

    $savePath = str_replace($root, $root . DIRECTORY_SEPARATOR . '__package', $filename);
    $saveDir = $isDir ? $savePath : dirname($savePath);

    if (!is_dir($saveDir)) {
        $result = mkdir($saveDir, 0777, true);
        $result_text = $result ? 'OK' : 'No';
        echo '创建目录:' . str_ireplace($root, '', $saveDir) . ' ' . $result_text . PHP_EOL;
    }

    if (!$isDir) {
        $result = copy($filename, $savePath);
        $result_text = $result ? 'OK' : 'No';
        echo '复制文件:' . str_ireplace($root, '', $filename) . ' ' . $result_text . PHP_EOL;
    }
});


function find(string $root, Closure $filter): void
{
    $items = new FilesystemIterator($root);
    
    foreach ($items as $item) {
        if ($item->isDir() && !$item->isLink()) {
            $filter($item, true);
            find($item->getPathname(), $filter);
            continue;
        }
        
        $filter($item, false);
    }
}

function p($array = []) {
    echo '<pre>';
    print_r($array);
    echo '</pre>';
}

文件下载:package.zip

评论

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

站点声明:本站转载作品版权归原作者及来源网站所有,原创内容作品版权归作者所有,任何内容转载、商业用途等均须联系原作者并注明来源。

© 2020-2030 qdxcy.cn 版权所有京ICP备13045222号
相关侵权、举报、投诉及建议等,请发E-mail:2323946929@qq.com

友情链接: YzmCMS官方网站 YzmCMS官方论坛