用于监视文件夹创建的PHP脚本

用于监视文件夹创建的PHP脚本,php,shell,dos,Php,Shell,Dos,我想写一个PHP脚本,告诉我今天创建了多少个文件夹(不是修改的!!) 假设if给出了路径(比如c:\Data),那么我的脚本必须不断地检查它 如果它是任何文件夹的新条目,请提供路径。我用过。但是对于修改过的文件夹也会得到结果。您可能希望尝试使用cron每隔一分钟启动一次脚本,并检查目录列表之间的差异(我是说以前和现在),而不是日期。这不是一个完美的解决方案,但会奏效 检查目录是否与以下内容一致: $dirs = array_filter(glob('*'), 'is_dir'); 稍后将它们与

我想写一个PHP脚本,告诉我今天创建了多少个文件夹(不是修改的!!)

假设if给出了路径(比如c:\Data),那么我的脚本必须不断地检查它
如果它是任何文件夹的新条目,请提供路径。我用过。但是对于修改过的文件夹也会得到结果。

您可能希望尝试使用cron每隔一分钟启动一次脚本,并检查目录列表之间的差异(我是说以前和现在),而不是日期。这不是一个完美的解决方案,但会奏效

检查目录是否与以下内容一致:

$dirs = array_filter(glob('*'), 'is_dir');
稍后将它们与比较:

使用filectime。对于Windows,它将返回创建时间;对于Unix,它将返回更改时间,因为在Unix上没有创建时间(在大多数文件系统中)

使用参考文件来比较文件的年代,可以检测不使用数据库的新文件

// Path to the reference file. 
// All files newer than this will be treated as new
$referenceFile="c:\Data\ref";
// Location to search for new folders
$dirsLocation="c:\Data\*";

// Get modification date of reference file
if (file_exists($referenceFile))
  $referenceTime = fileatime($referenceFile);
else 
  $referenceTime = 0;

// Compare each directory with the reference file
foreach(glob($dirsLocation, GLOB_ONLYDIR) as $dir) {
  if (filectime($dir) > $referenceTime)
    echo $dir . " is new!";
}

// Update modification date of the reference file
touch($referenceFile);


另一个解决方案是使用数据库。不在数据库中的任何文件夹都是新的。这确保不会捕获修改过的文件夹。

检查如何在此处找到目录:并将目录数组与:fileatime返回上次访问时间(即修改时间)进行比较。当我们将$referenceFile与$dirsLocation进行比较时,if条件变为true,并且总是说此文件是新的。。