首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查文件夹中的新文件

检查文件夹中的新文件
EN

Stack Overflow用户
提问于 2014-08-11 15:05:49
回答 4查看 3.4K关注 0票数 1

我在一个文件夹中使用Cron每5分钟运行一次php脚本。在文件夹中有几张图片,随着时间的推移,我添加了更多的图片。

我想知道怎样才能让php脚本在一开始就检查在脚本最后一次运行后是否存在新文件?如果存在新文件,则脚本应继续执行;如果不存在新文件,则不应继续执行。我试着到处搜索,但是我找不到任何关于php的东西。

有谁知道这个问题的快速解决方案吗?

EN

回答 4

Stack Overflow用户

发布于 2014-08-11 15:12:24

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

示例:

代码语言:javascript
复制
$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()

代码语言:javascript
复制
$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,并且使用此脚本,它将始终处理自上次运行以来修改过的新文件,无论它发生在多长时间之前。

票数 2
EN

Stack Overflow用户

发布于 2014-08-11 15:09:12

方法:

当cron在文件中执行时,存储当前时间,或者当cron启动时,存储database.

  • every时间,从您的文件或数据库中获取cron的最后执行时间,

  • 计算上次执行时间之后创建的文件。如果计数大于0,则为

  • 。处理cron。其他明智的停止。
票数 0
EN

Stack Overflow用户

发布于 2014-08-11 15:11:06

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

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

代码语言:javascript
复制
int filemtime ( string $filename )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25237545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档