PHP rename() 复制文件而不是使用新版本

PHP rename() duplicates file instead of using new version

我们的网站每天都会发送一个 .csv 文件,我们用户可以从不同的系统导入数据。有时导入工作正常,但我 运行 遇到脚本导入重复数据而不是使用新文件的问题。

系统会继续导入旧文件,直到我通过SFTP登录查看文件后,才会抓取新文件。似乎脚本正在将旧文件加载到内存中然后不清除它。

例如:

系统会继续导入旧版本文件,直到我通过SFTP登录。

我的导入代码如下。这里有什么可以解释可能发生的事情吗?

function energyuportal_cron () {

    if (($handle = fopen($CFG->dirroot.'/'."report.csv", "r")) !== FALSE) {

        while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
            if (energyuportal_check_data($data[1], $data[4])) {
            // This imports the data        
            energyuportal_manage_completions($data[1], $data[4], $data[5], $data[7]);
            }

        }
        fclose($handle);

        rename($CFG->dirroot.'/'.$CFG->energyuportal_filelocation.'/'."report.csv", 
                $CFG->dirroot.'/'.'/old/'."report".date("Y-m-d-H-ia").".csv");


    } else {
        // Error
    }

return true;
}

在执行 fopen() 之前在文件上记录 stat() 的结果。也尝试添加 clearstatcache().

如果您正在执行 include(),我会查看任何字节码编译器的缓存设置,但您不会。所以我会开始质疑托管环境和fs层。

http://php.net/stat

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