Ert*_*unç 6 php directory shell notifications multiplatform
我正在寻找一种使用php检测文件夹更改的解决方案。该应用程序可以在两个平台(linux和windows)上运行。只要结果相同,我可能会为每个平台使用不同的方法。我想要的是:
size,filetime等)c:\tmp, 或d:\music在 windows 或/home/ertunclinux 上)会更好我阅读了一些内容,inotify但我不确定它是否满足我的需求。
因此,如果您要与上次检查时进行比较,而不是在更改后立即更新,您可以执行以下操作。
您可以创建一个目录的 MD5,存储此 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));
}
Run Code Online (Sandbox Code Playgroud)
但这效率相当低,因为您可能知道,如果第一位不同,则没有必要检查目录的全部内容。