我在一个文件夹中使用Cron每5分钟运行一次php脚本。在文件夹中有几张图片,随着时间的推移,我添加了更多的图片。
我想知道怎样才能让php脚本在一开始就检查在脚本最后一次运行后是否存在新文件?如果存在新文件,则脚本应继续执行;如果不存在新文件,则不应继续执行。我试着到处搜索,但是我找不到任何关于php的东西。
有谁知道这个问题的快速解决方案吗?
发布于 2014-08-11 15:12:24
如果还使用新的时间戳创建了新文件,则可以使用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,并且使用此脚本,它将始终处理自上次运行以来修改过的新文件,无论它发生在多长时间之前。
发布于 2014-08-11 15:09:12
方法:
当cron在文件中执行时,存储当前时间,或者当cron启动时,存储database.
发布于 2014-08-11 15:11:06
您可以跟踪脚本上次运行的时间,并使用filemtime检查文件是否在上次执行后更新或创建。
http://php.net/manual/en/function.filemtime.php
int filemtime ( string $filename )https://stackoverflow.com/questions/25237545
复制相似问题