0

データベースのバックアップをディレクトリ構造に保存します

年/月/日/時刻/バックアップ名

例は

basics_mini/2012/11/05/012232/RATIONAL.0.db2inst1.NODE0000.20110505004037.001 basics_mini/2012/11/06/012251/RATIONAL.0.db2inst1.NODE0000.20110505003930.001

バックアップ ファイルのタイムスタンプは使用できないことに注意してください。自動化テストが開始される前に、サーバー時刻は 5.5.2011 に設定されます。

問題は、コーディングしようとしている関数に「ベース ディレクトリ」(basics_mini) を渡すと、どのようにして最新のファイルを取得できるかということです。私の考えでは、ベース ディレクトリを一覧表示し、年を取得するために時間で並べ替えます。次に、月、日、時間についても同じことを行います。

PHPでそれに対する「より簡単な」解決策があるかどうか疑問に思います。

4

2 に答える 2

1

さて、あなたは一度にディレクトリツリー全体をフェッチして、そこから最後の要素を取得することができます:

$baseFolder = './backup_mini' ;

$arr = glob("{$baseFolder}/*/*/*/*", GLOB_ONLYDIR);
$lastDir = array_pop($arr);
于 2012-11-08T23:12:16.420 に答える
1

驚くほどシンプルなワンライナーは知りませんが、これが役立つようです:

$files = array();
$flags = FilesystemIterator::CURRENT_AS_SELF;
$dir = new RecursiveDirectoryIterator('/path/to/basics_mini', $flags);
foreach ($dir as $path) {
    if ($path->isFile()) {
        $files[$path->getPath()] = $path->getFilename();
    }
}

ksort($files);

RecursiveDirectoryIteratorディレクトリ構造がもう少し複雑なため、a を使用することをお勧めします。定数も役立ちます
FilesystemIterator

于 2012-11-08T23:45:13.937 に答える