更新前の日時が取得されます。(下記PHPソースを参照下さい)
file_put_contentsした後は、更新後の更新日時を取得したいのですが
どうすれば実現できますでしょうか?
お手数お掛けしますが、宜しくお願い致します。
<?php
$data = "";
for ($i=0; $i<5; $i++) $data .= mt_rand(1, 6);
$filename = "./test.txt";
$time = date("Y/m/d H:i:s", filemtime($filename));
echo "data:" . $data . "<br>";
echo "file_put_contents前 ファイル最終更新日時:" . $time . "<br>";
@file_put_contents($filename, $data);
@chmod($filename, 0777);
$time = date("Y/m/d H:i:s", filemtime($filename));
echo "file_put_contents後 ファイル最終更新日時:" . $time . "<br>";
パフォーマンスを稼ぐために、結果がキャッシュされています。
注意: この関数の結果は キャッシュされます。詳細は、clearstatcache() を参照してください。
PHP: filemtime - Manual
statやlstat、 またはその他の関数(後述)を使用すると、PHPはパフォーマンス向上のために それらの関数の戻り値をキャッシュします。しかし、ケースによっては、 キャッシュされた情報を消去したい場合もあるでしょう。 例えば、一つのスクリプト上で同じファイルが何度もチェックされ、 そのファイルが変更されたり削除されたりする可能性がある場合、 ステータスキャッシュを消去しなければならないと感じるでしょう。 このようなケースでは、clearstatcache()を使用することで ファイルの情報に関してPHPが持っているキャッシュをクリアすることができます。
PHP: clearstatcache - Manual
キャッシュされているのはパフォーマンスのことを考えてなので、ファイル名を指定してキャッシュをクリアした方が良いかもしれません。
<?php ... file_put_contents($filename, $data); chmod($filename, 0777); // 該当ファイルのキャッシュをクリアする clearstatcache(false, $filename); $time = date("Y/m/d H:i:s", filemtime($filename));
ありがとうございます!
2016/01/05 20:31:18助かりました。
すみません、マニュアルしっかり読みたいと思います。