Php - папка последняя модификация datetime - - PullRequest
0 голосов
/ 18 июня 2011

Я пишу скрипт, который создает список всех файлов и папок, и при следующем запуске я хотел проверить, изменена ли папка с прошлого раза, и если нет, исключить папку из чтения на этот раз,

Я использую функции filemtime () и stat (),

Это работает, когда я добавляю новые файлы в подпапки, дата меняется, но если я редактирую файл в папке, идентификатор даты последнего изменения папки не меняется, используяэти функции.

Есть ли способ, как проверить, были ли файлы в папке отредактированы, не просматривая все файлы один за другим ??

этот скрипт будет запускаться очень часто, поэтому я нехотите, чтобы он каждый раз просматривал все файлы и папки (в некоторых папках много файлов)

Ответы [ 2 ]

4 голосов
/ 18 июня 2011

filemtime() возвращает время записи блоков данных в файл, то есть время, когда содержимое файла было изменено.теперь папка также является special file, которая содержит информацию о файлах, содержащихся в папке, и что я понимаю, когда вы используете filemtime() в папке, она показывает, когда, когда папка (файл) byte-size была изменена.поэтому, когда вы добавляете файл в папку, в папке (специальный файл) создается запись о файле, и его byte-size изменяется, но когда вы редактируете уже существующий файл, размер байта папки (специального файла) не изменяется, поэтомуfilemtime () не показывает изменений.

2 голосов
/ 18 июня 2011

Это может сработать:

function foldermtime($dir) {
    $foldermtime = 0;

    $flags = FilesystemIterator::SKIP_DOTS | FilesystemIterator::CURRENT_AS_FILEINFO;
    $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, $flags));

    while ($it->valid()) {
        if (($filemtime = $it->current()->getMTime()) > $foldermtime) {
            $foldermtime = $filemtime;
        }
        $it->next();
    }

    return $foldermtime ?: false;
}

var_dump(foldermtime(__DIR__));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...