有没有一种方法来检测使用的Windows和Linux的PHP文件夹中的变化?(Is there a

2019-08-01 18:00发布

我正在寻找一个解决方案来检测在使用PHP文件夹(S)的变化。 该应用程序可以在两个平台(LinuxWindows)上运行。 只要结果是相同的我可以用不同的方式为每个平台。 我的愿望是:

  1. 如果一个文件/文件夹添加到一个目录,我想我的应用程序,以检测这一新的文件并阅读其属性( size,filetime等)
  2. 如果现有的文件/文件夹保存在/内容更改/删除,我需要检测该文件被修改
  3. 它会更好,如果我可以监视外面的Apache Web根目录基础的文件夹(如c:\tmp ,或d:\music在Windows或/home/ertunc在Linux上)

我读的东西inotify ,但我不知道它符合我的需要。

Answer 1:

所以,如果你和你比起来检查,而不是仅仅被只要它改变了你可以做下面的最后一次更新检查。

你可以创建一个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));
}

这是相当低效虽然,因为你可能知道,有没有点检查目录中的全部内容,如果第一位是不同的。



Answer 2:

监控更改文件系统是应该PHP之外来解决的任务。 这不是真正建立做这样的东西。

有两个平台,可以监控,可以调用PHP文件做进一步的处理文件更改现成的工具。

对于Linux:

  • 如何有效地监控在Linux上变化的目录? (看起来最快速浏览)
  • 监测目录的更改

对于Windows:

  • 如何监视更改的文件夹,如果确实如此,在Windows上执行命令?
  • 在第二个答案我如何监控更改一个Windows目录?


Answer 3:

我会

  1. 扫描所有文件夹/文件和创建它们的数组,
  2. 保存这个地方
  3. 稍后再次运行此扫描[检查数组看起来还是一样。

当你从“时间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?