我有一个PHP脚本,我每隔5分钟从一个文件夹中使用Cron运行。在文件夹中有几个图像,随着时间的推移我添加更多。
我想知道如何在开始时检查php脚本是否在上次运行脚本后检查是否存在新文件?如果存在新文件,则脚本应该继续,如果不存在新文件,则不应该继续。我试着四处寻找,但我找不到任何关于php的内容。
任何知道这个问题的快速解决方案的人都可以吗?
答案 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)
方法:
答案 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);