• ベストアンサー

ディレクトリ内にあるファイルの最終更新時間を取得したい

指定したディレクトリ内に自動生成されて保存されるファイルの最終更新時間を取得したいと思っています。 hogeというディレクトリがあったとして この中に200511.logというファイルがあり日々更新されて行きます。 ただし、月が変わると200512.logと新しいファイルが生成されてまた更新されて行くような感じです。 この場合、ただ <?php echo "最終更新: " . date("Y-n-d", filemtime('hoge/200511.log')); ?> とすれば、当月は良いのですが、来月になったら更新されなくなってしまいます。 ディレクトリの時間でやってみたらどうかと思い、 <?php echo "最終更新: " . date("Y-n-d", filemtime('hoge/')); ?> とやってみましたが、これだと、ただ単にhogeというディレクトリ自体の更新が表示されてしまいました。(当たり前か。。) つまりやりたい事は、hogeディレクトリ内でなにか変化が起きたらその時間を表示したい、ということなのですが、どうすれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kuny2005
  • ベストアンサー率67% (21/31)
回答No.4

既に解決済みでしょうか・・ $filename = exec("ls -c1 hoge/"); で一番最後にファイルステータスを更新したファイル名を取得できますので、これを元に処理をしてみてはどうでしょうか。

tak-y
質問者

お礼

別の方法で解決できました。(ログ(csv)表示させるプログラムを作って、ログそのものから日付を引っ張ってきました) ですが、この方法こそ本来やろうとした事でした。 今後の参考にさせて頂きたいと思います。 ありがとうございました。

その他の回答 (3)

  • taskuni
  • ベストアンサー率71% (49/69)
回答No.3

別の方向からのアドバイスをひとつ入れときます。 ログ自動生成の方のプログラムをいじれるのであれば、 ログの自動生成と同時に、固定名のダミーファイル('hoge/dummy.txt'等)を一つ生成すれば、 あとはそのダミーの更新日時を <?php echo "最終更新: " . date("Y-n-d", filemtime('hoge/dummy.txt')); ?> で取得すればいいと思います。 そのプログラム以外からファイルの更新があるのなら、使えない方法ですけれども。

tak-y
質問者

お礼

生成プログラムの方は弄れないのです。また複数のプログラムから更新されるので、残念ながらこの方法は取れません。 が、アイデアとして大変参考になりました。今後活かしたいと思います。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

<?php echo "最終更新: " . date("Y-n-d", filemtime('hoge/200511.log')); ?> でいいのだったら $year=date("Y"); $month=date("m"); としておいて echo "最終更新: " . date("Y-n-d", filemtime("hoge/$year$month.log")); とすればいいのでは

tak-y
質問者

お礼

上手く行きそうです。ありがとうございました!

tak-y
質問者

補足

と思ったのですが、当月は良さそうなのですが、必ずしも毎日更新されるわけではなく、付きの切り替え時期でズレそうな気がしてきました。。

回答No.1

statという関数でその動作を取得することが出来ます。 mtimeが最終更新時間になると思います。 詳細はマニュアルのstat関数のページで確認してみてください。

参考URL:
http://php.planetmirror.com/manual/ja/function.stat.php
tak-y
質問者

お礼

参考にしてみます。 ctimeというものとの差異がイマイチ判りませんが、勉強しないと。。 ありがとうございました!

関連するQ&A