Php 检查文件夹中的新文件

Php 检查文件夹中的新文件,php,Php,我有一个php脚本,每5分钟从一个文件夹运行一次。在文件夹中有几个图像,随着时间的推移,我添加了更多图像 我想知道如何在开始时让php脚本检查上次运行脚本后是否存在新文件?如果存在新文件,则脚本应继续,如果不存在新文件,则脚本不应继续。我试着四处搜索,但找不到关于php的任何信息 任何知道此问题快速解决方案的人都可以打赌?方法: 在文件或数据库中执行cron时存储当前时间 每次cron启动时,从文件或数据库中获取cron的最后执行时间 对上次执行后创建的文件进行计数 如果计数大于0。处理cron

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

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


任何知道此问题快速解决方案的人都可以打赌?

方法:

  • 在文件或数据库中执行cron时存储当前时间
  • 每次cron启动时,从文件或数据库中获取cron的最后执行时间
  • 对上次执行后创建的文件进行计数
  • 如果计数大于0。处理cron。另一个明智的停止

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


    如果新文件也使用新的时间戳创建,则可以使用
    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脚本可以修改文件夹/timestamp.txt,并且使用此脚本,它将始终处理自上次运行以来修改的新文件,无论它发生在多长时间之前。

    使用如下,您将获得添加的时间作为日期格式

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

    谢谢你,如何以及在哪里存储时间并让它在下次运行时检查它是最好的方法?
    $file_time = date ("F d Y H:i:s.", filemtime($filename);