PHP - 在目录中获取具有精确修改日期的多个最新文件

时间:2017-05-15 04:43:14

标签: php file directory

这是一个重复的问题,因为我在Stackoverflow上尝试了所有其他现有解决方案,花了5个小时后我无法得到理想的结果。

我希望在修改日期方面从给定目录中获取两个(或更多)新添加的文件。问题是两个文件在时间戳方面都在完全相同的时间进行了修改。

文件名如下:

data_london_20170515_0900.csv
data_toronto_20170515_0900.csv

在专家开发人员发表评论后编辑:

在尝试实施此解决方案之前,我只是在某个时间访问文件,即复制文件后的一分钟。 (因此,在每个使用任务计划程序重新复制的文件后,脚本运行一分钟)

$date=date('Ymd');
$time = date('Hi', strtotime('-1 minutes')); // 1 minute less actual server time 
$date_time = $date."_".$time; // part of file name
$timeStamp_logFile = date("d/m/Y")." ".date("h:i:sa"); // DateTime used for file log entry

copy("//server/folder/data_london_".$date_time.".csv","c:/inetpub/wwwroot/folder/files/data_london_".$date_time.".csv");
copy("//server/folder/data_toronto_".$date_time.".csv","c:/inetpub/wwwroot/folder/files/data_toronto_".$date_time.".csv");

# Iterate through copied files and DB insertion

由于零下一分钟的问题,上述解决方案有时会中断。

我试图实现this solution,但我没有输出,只是空数组。还尝试了this solution,但是输出空白。

下面提到的解决方案没有给我输出:

$dir = "//server/folder/";

function scan_dir($dir) {
    $ignored = array('.', '..', '.svn', '.htaccess');

    $files = array();    
    foreach (scandir($dir) as $file) {
        if (in_array($file, $ignored)) continue;
        $files[$file] = filemtime($dir . '/' . $file);
    }

    arsort($files);
    $files = array_keys($files);

    return ($files) ? $files : false;
}

$f = scan_dir($dir);
print_r($f);

知道如何解决这个问题吗?

感谢。

0 个答案:

没有答案