【PHP】ファイル操作を行う際の注意メモ。

自分用。

ファイルの最終更新時間をtouch()などで更新した後、再度取得する際はファイルのステータスキャッシュをクリアしてやる必要がある。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$filePath = '/path/to/targetFile.ext';
 
echo date('Y-m-d H:i:s', filemtime($filePath))."\n";
 
touch($filePath);
 
echo date('Y-m-d H:i:s', filemtime($filePath))."\n";
 
clearstatcache();
 
echo date('Y-m-d H:i:s', filemtime($filePath))."\n";
2013-08-24 09:27:54
2013-08-24 09:27:54
2013-08-24 09:32:05

出力結果の2行目でもわかる通り、touch()にてファイルの最終更新日時を変更しているにもかかわらず、キャッシュの所為で更新前の値が取得されてしまっている。
ファイル操作周りの関数を実行した後は、正しい値を取得するためにもキャッシュの挙動には十分注意されたし。

ちなみにtouch()で最終更新日時を更新できることを始めて知った。