Этот скрипт - лучший из всех, которыми я управлял. Он включает в себя инструмент командной строки stat
, доступный на BSD, для создания атрибута времени рождения inode.
// stat.php
$filename = 'test';
$stat = stat($filename);
date_default_timezone_set('America/Denver');
echo strftime("atime: %H:%M:%S\n", $stat['atime']);
echo strftime("mtime: %H:%M:%S\n", $stat['mtime']);
echo strftime("ctime: %H:%M:%S\n", $stat['ctime']);
if ($handle = popen('stat -f %B ' . escapeshellarg($filename), 'r')) {
$btime = trim(fread($handle, 100));
echo strftime("btime: %H:%M:%S\n", $btime);
pclose($handle);
}
Командная строка stat
Инструмент читает atime, ctime, mtime точно так же, как статистика PHP, но имеет четвертый параметр «время рождения inode».Системный вызов BSD stat()
возвращает st_birthtime, когда он доступен, но я не нашел способа нативно представить его PHP.
$ touch test # create a file
$ stat test
..."May 30 06:16:22 2011" "May 30 06:16:22 2011" "May 30 06:16:22 2011" "May 30 06:16:11 2011"...
$ open .
$ touch test # about one minute later
$ stat test
..."May 30 06:17:04 2011" "May 30 06:17:04 2011" "May 30 06:17:04 2011" "May 30 06:16:11 2011"...
$ php stat.php
atime: 06:52:48
mtime: 06:17:04
ctime: 06:17:04
btime: 06:16:11
Следующая команда возвращает метку времени Unix только время рождения инода, которое является лучшим, которое я нашел до сих пор.Вы можете запустить его с помощью popen () или proc_open ()
$ stat -f %B test
1306757771