2011-06-18 16 views
0

すべてのファイルとフォルダのリストを作成するスクリプト、 を実行し、次回実行時には前回からフォルダが変更されているかどうかを確認したい場合は、この時、php - 最終更新日時 -

私はfilemtime()を使用し、及びSTAT()関数で、

それは私は日付が変更されたサブフォルダに新しいファイルを追加するとき、動作しますが、私は、フォルダ内のファイル、フォルダの最終更新日時IDを編集した場合これらの機能を使用して、変更しません。

フォルダ内のファイルがすべて編集されているかどうかを確認する方法はありますか?

これは仕事ができる(一部のフォルダ内のファイルがたくさんある)ので、それはすべてのファイルとフォルダを毎回行く

+0

あなたが求めるものは、ファイルシステムの構成に大きく依存します。問題のディレクトリにはどのファイルシステムを使用していますか? – hakre

+0

重複している可能性があります:[Windowsエクスプローラのフォルダの "修正日時"のルール](http://stackoverflow.com/questions/1025187/rules-for-date-modified-of-folders-in-windows-explorer) – hakre

+0

あなたが編集フォルダを意味すると、ファイルを削除したり、ファイルを変更したりすることを意味します。 – lovesh

答えて

2

このスクリプトは非常に頻繁に実行されますので、私はいけない:

function foldermtime($dir) { 
    $foldermtime = 0; 

    $flags = FilesystemIterator::SKIP_DOTS | FilesystemIterator::CURRENT_AS_FILEINFO; 
    $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, $flags)); 

    while ($it->valid()) { 
     if (($filemtime = $it->current()->getMTime()) > $foldermtime) { 
      $foldermtime = $filemtime; 
     } 
     $it->next(); 
    } 

    return $foldermtime ?: false; 
} 

var_dump(foldermtime(__DIR__)); 
+0

作品、私はいくつかのより多くのテストを行いますthnx – Edmhs

4

filemtime()は、ファイルのデータブロックが書き込まれた時刻、つまりファイルの内容が変更された時刻を返します。現在のフォルダはspecial fileで、フォルダに含まれるファイルに関する情報が含まれています。フォルダ(ファイル)のbyte-sizeが変更されたときに表示されるフォルダにfilemtime()を使用するとわかります。ファイルをフォルダに追加すると、ファイルに関するエントリがフォルダ(特殊ファイル)に作成され、そのbyte-sizeが変更されますが、既存のファイルを編集すると、フォルダ(特殊ファイル)のバイトサイズは変更されません。 )は変化を示さない。

+0

thnx説明のために – Edmhs

関連する問題