PHP教程
为了方便打包源码部署到线上,写了个提取最近修改了哪些文件。
文件下载之后,放到项目运行目录,修改一下修改时间即可。
<?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