fileatime で取得できる時刻は、「ファイルの最終アクセス時刻」とありますが、ある画像のURLをブラウザのアドレスバーに入力して表示しても、この時刻は更新されません。
しかし、phpで下記の様にして表示すると更新されます。
header("Content-type: image/jpg");
print file_get_contents("hoge.jpg");
また、FTPソフトで、サーバ内の画像をプレビューしても時刻は更新されました。
「ファイルの最終アクセス時刻」とありますが、
どういう時に、この時刻が更新されるのか教えて下さい。
宜しくお願いします。
ある画像のURLをブラウザのアドレスバーに入力して表示しても、この時刻は更新されません。
ブラウザのキャッシュが効いているからじゃないでしょうか。
ctrl+F5 で強制読み込みすると、最終アクセス時刻が更新されると思います。
php のコードでファイルをアクセスすると最終アクセス時刻が更新されるのは、その php を動かす URL が毎回動くからです。
Last-Modified や Cache-Control ヘッダを返してキャッシュが効くようにすると、2回目以降は最終アクセス時刻は更新されないと思います。
さくらの共用サーバだと、ぱっとググった感じではキャッシュサーバを通してる感じは無さそうですが、apache のキャッシュ制御を使っている可能性はあります。
https://httpd.apache.org/docs/2.4/caching.html
ありがとうございました。
わからないので、とりあえず、後回しにしました。
下記の様に書かれているので、そういう風に設定しているのかもしれませんね。
http://php.net/manual/ja/function.fileatime.php
> 注意:
> ァイルの atime は、 ファイルのデータブロックが読み込まれる度に変更されるとみなされます。 この仕様は、アプリケーションが非常に多くのファイルまたはディレクトリに 常にアクセスする場合に性能上の負荷となる可能性があります。
> Unix のファイルシステムの中には、 このようなアプリケーションの性能を向上させるために atime の更新を無効としてマウントできるものもあります。 USENET のニューススプールが一般的な例です。 このようなファイルシステムでは、この関数は使用できません。
ある画像のURLをブラウザのアドレスバーに入力して表示しても、この時刻は更新されません。
ブラウザのキャッシュが効いているからじゃないでしょうか。
ctrl+F5 で強制読み込みすると、最終アクセス時刻が更新されると思います。
php のコードでファイルをアクセスすると最終アクセス時刻が更新されるのは、その php を動かす URL が毎回動くからです。
Last-Modified や Cache-Control ヘッダを返してキャッシュが効くようにすると、2回目以降は最終アクセス時刻は更新されないと思います。
さくらの共用サーバだと、ぱっとググった感じではキャッシュサーバを通してる感じは無さそうですが、apache のキャッシュ制御を使っている可能性はあります。
https://httpd.apache.org/docs/2.4/caching.html
ありがとうございました。
わからないので、とりあえず、後回しにしました。
下記の様に書かれているので、そういう風に設定しているのかもしれませんね。
http://php.net/manual/ja/function.fileatime.php
> 注意:
> ァイルの atime は、 ファイルのデータブロックが読み込まれる度に変更されるとみなされます。 この仕様は、アプリケーションが非常に多くのファイルまたはディレクトリに 常にアクセスする場合に性能上の負荷となる可能性があります。
> Unix のファイルシステムの中には、 このようなアプリケーションの性能を向上させるために atime の更新を無効としてマウントできるものもあります。 USENET のニューススプールが一般的な例です。 このようなファイルシステムでは、この関数は使用できません。
こういうのは関係ないのだろうか
注意: この関数の結果は キャッシュされます。詳細は、clearstatcache() を参照してください。
ああ、そうなんだ。いやこの辺見たけど何だかよく分からなかったんですよね(爆)
http://d.hatena.ne.jp/i_ogi/20080506/1210062971
http://stackoverflow.com/questions/18097432/does-file-get-contents-use-a-cache
ありがとうございました。