PHP - linux/unix CTIME (время изменения инода) устанавливается, когда он только модифицируется

Согласно: http://www.php.net/manual/en/function.filectime.php

«В большинстве файловых систем Unix файл считается измененным, когда изменяются данные его индексного дескриптора, то есть когда обновляются разрешения, владелец, группа или другие метаданные из индексного дескриптора».

Однако запуск Debian linux (uname -r: 2.6.26-2-686), когда я обращаюсь к файлу и пишу в него, скажем, с помощью PHP

$fh = fopen($file, 'a');
fwrite($fh, "hello world"); 
fclose($fh);

Будут обновлены как время изменения (filemtime), так и время изменения (filectime). Насколько я понимаю, ctime изменяется только при изменении настроек файла (разрешения, право собственности, имя), а не самого содержимого.

clearstatcache();

echo "$file was last changed: " . date("F d Y H:i:s.", filectime($file)). "<br>";
echo "$file was last modified: " . date("F d Y H:i:s.", filemtime($file)). "<br>";
echo "$file was last accessed: " . date("F d Y H:i:s.", fileatime($file)). "<br>";

person ParoX    schedule 26.07.2010    source источник


Ответы (2)


Ничего, после прочтения http://www.kavoir.com/2009/04/linux-the-differences-between-file-times-atime-accessed-time-ctime-changed-time-and-mtime-modified-time.html

В нем указано: «ctime — время изменения или время последнего изменения файла или каталога, всякий раз, когда вы изменяете и обновляете файл, например, меняете владельца файла или разрешения или изменяете содержимое файла, ctime файла обновляется до текущего времени"

person ParoX    schedule 26.07.2010
comment
Они не очень хорошо объясняют это в определении PHP. - person ParoX; 26.07.2010

Когда вы изменяете данные файла - вы меняете mtime, поскольку mtime (время модификации) является ЧАСТЬЮ INODE, поэтому, когда mtime изменяется, метаданные файла также изменяются, следовательно, ctime (время изменения) также изменяется :)

person anonymous    schedule 17.09.2013