检查文件夹中的新文件

时间:2014-08-11 07:05:49

标签: php

我有一个PHP脚本,我每隔5分钟从一个文件夹中使用Cron运行。在文件夹中有几个图像,随着时间的推移我添加更多。

我想知道如何在开始时检查php脚本是否在上次运行脚本后检查是否存在新文件?如果存在新文件,则脚本应该继续,如果不存在新文件,则不应该继续。我试着四处寻找,但我找不到任何关于php的内容。

任何知道这个问题的快速解决方案的人都可以吗?

4 个答案:

答案 0 :(得分:1)

如果还使用新时间戳创建新文件,则可以使用filemtime()仅获取在指定时间窗口中创建/修改的文件。

示例:

$files = glob("folder/*.jpg");
$files = array_filter($files, function ($file) { return filemtime($file) >= time() - 5*60; /* modified in the last 5 minutes */ });

if ($files)
{
   // there are new files! $files is an array with their names
}

为了确保您不会错过任何文件,您可能希望存储上次运行的时间,因此如果cron延迟一两秒,并且在该窗口内准确创建了新文件,您将不会丢失跟踪他们。

评论更新:

现在,要存储上次检查的时间,由您决定如何操作,您可以使用数据库,文件,某种环境变量等,但这里有一个如何做的示例在文件中存储time()非常简单:

$last  = (int)file_get_contents('folder/timestamp.txt');
file_put_contents('folder/timestamp.txt', time());
$files = glob("folder/*.jpg");
$files = array_filter($files, function ($file) { return filemtime($file) > $last; });

if ($files)
{
   // there are new files! $files is an array with their names
}

只需确保您的PHP脚本可以修改folder/timestamp.txt,并且使用此脚本它将始终处理自上次运行以来修改的新文件,无论它发生多久以前。

答案 1 :(得分:0)

方法:

  1. 在文件或数据库中执行cron时存储当前时间。
  2. 每次cron开始从文件或数据库中获取cron的最后执行时间
  3. 计算在上次执行时间之后创建的文件。
  4. 如果count大于0.处理cron。其他明智的停止。

答案 2 :(得分:0)

您可以跟踪脚本上次运行的时间,并使用filemtime检查文件是否在上次执行后更新或创建。

http://php.net/manual/en/function.filemtime.php

int filemtime ( string $filename )

答案 3 :(得分:0)

使用filemtime(),如下所示,您将获得添加的时间作为日期格式。

$file_time = date ("F d Y H:i:s.", filemtime($filename);