我正在寻找一个解决方案来检测在使用PHP文件夹(S)的变化。 该应用程序可以在两个平台(Linux和Windows)上运行。 只要结果是相同的我可以用不同的方式为每个平台。 我的愿望是:
- 如果一个文件/文件夹添加到一个目录,我想我的应用程序,以检测这一新的文件并阅读其属性(
size,filetime
等) - 如果现有的文件/文件夹保存在/内容更改/删除,我需要检测该文件被修改
- 它会更好,如果我可以监视外面的Apache Web根目录基础的文件夹(如
c:\tmp
,或d:\music
在Windows或/home/ertunc
在Linux上)
我读的东西inotify
,但我不知道它符合我的需要。
所以,如果你和你比起来检查,而不是仅仅被只要它改变了你可以做下面的最后一次更新检查。
你可以创建一个MD5的目录,然后storew这个MD5与旧的比较新的MD5,看事情发生了变化。
从下面拍摄的功能http://php.net/manual/en/function.md5-file.php会为你做这个。
function MD5_DIR($dir)
{
if (!is_dir($dir))
{
return false;
}
$filemd5s = array();
$d = dir($dir);
while (false !== ($entry = $d->read()))
{
if ($entry != '.' && $entry != '..')
{
if (is_dir($dir.'/'.$entry))
{
$filemd5s[] = MD5_DIR($dir.'/'.$entry);
}
else
{
$filemd5s[] = md5_file($dir.'/'.$entry);
}
}
}
$d->close();
return md5(implode('', $filemd5s));
}
这是相当低效虽然,因为你可能知道,有没有点检查目录中的全部内容,如果第一位是不同的。
监控更改文件系统是应该PHP之外来解决的任务。 这不是真正建立做这样的东西。
有两个平台,可以监控,可以调用PHP文件做进一步的处理文件更改现成的工具。
对于Linux:
- 如何有效地监控在Linux上变化的目录? (看起来最快速浏览)
- 监测目录的更改
对于Windows:
- 如何监视更改的文件夹,如果确实如此,在Windows上执行命令?
- 在第二个答案我如何监控更改一个Windows目录?
我会
- 扫描所有文件夹/文件和创建它们的数组,
- 保存这个地方
- 稍后再次运行此扫描[检查数组看起来还是一样。
当你从“时间1”和“现在”整个数据结构,你可以清楚地看到发生了什么变化。 要通过目录检索,检查: http://www.evoluted.net/thinktank/web-development/php-directory-listing-script这http://phpmaster.com/list-files-and-directories-与-PHP /
文章来源: Is there a way to detect changes in a folder using php on both windows and linux?