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

时间:2013-06-27 13:17:04

标签: php shell dos

我想编写一个PHP脚本,它会告诉我今天创建了多少个文件夹(没有修改过!!)。

实施例。假设是否给出了路径(如c:\ Data),所以我的脚本必须不断检查 如果它是任何文件夹的新条目,则给出路径。我使用过http://php.net/manual/en/function.date-diff.php。但是也可以获得修改过的文件夹的结果。

2 个答案:

答案 0 :(得分:1)

Quote from @Alin Purcaru

  

使用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);

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

答案 1 :(得分:0)

您可能想尝试使用cron像每一分钟一样启动脚本并检查目录列表之间的区别(从之前和当前我的意思),而不是日期。这不是一个完美的解决方案,但它会起作用。

使用以下命令检查目录:

$dirs = array_filter(glob('*'), 'is_dir');

稍后将其与array_diff

进行比较