Обновляется ли atime/mtime на fopen, fread/fwrite и / или fclose?
Мне просто интересно; Обновлен fread
, fopen
и / или fclose
?
Что насчет mtime? Это обновлено на fopen
, fwrite
и / или fclose
?
2 ответа
Решение
Если твой strace
ваш процесс, вы увидите fopen
и соответствующая система stat
, Использовать PHP
В качестве примера.
Пример с PHP
Сначала убедитесь, что файловая система обновляет эти значения,
mount -o remount,atime,diratime /
Затем сделайте небольшой сценарий.
<?php
echo "fopen: " .date("H:i:s \n");
$fh = fopen('test.tmp', 'r');
sleep(2);
echo "fread: ".date("H:i:s \n");
fread($fh,1024);
sleep(2);
echo "fwrite: ".date("H:i:s \n");
fwrite($fh,'test');
sleep(2);
echo "fclose: ".date("H:i:s \n");
fclose($fh);
echo shell_exec('stat test.tmp');
Затем сделайте контрольный пример и выполните
echo test > test.tmp
php test.php
Что приводит к...
[/]$ php test.php
fopen: 14:31:34
fread: 14:31:36
fwrite: 14:31:38
fclose: 14:31:40
File: `test.tmp'
Size: 5 Blocks: 8 IO Block: 4096 regular file
Device: 805h/2053d Inode: 98213 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-09-27 14:31:36.000000000 +0100
Modify: 2012-09-27 14:28:28.000000000 +0100
Change: 2012-09-27 14:28:28.000000000 +0100
Так...
fread
должен соотноситься сatime
fwrite
должен соотноситься сmtime
,
Ссылка
mtime: time of last modification (eg. ls -l)
ctime: time of last status change (eg. ls -lc)
atime: time of last access (eg. ls -lu)
Это довольно хорошо задокументировано как часть stat
функция, ссылка http://en.wikipedia.org/wiki/Stat_%28system_call%29
Вы должны открыть файл с 'w'
для записи на работу:
$fh = fopen('test.tmp', 'w');