我们的网站每天都会发送一个.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;
}
答案 0 :(得分:0)
在执行fopen()之前,在文件上记录stat()的结果。还可以尝试添加clearstatcache()。
如果你正在做一个include(),我会看看任何字节码编译器的缓存设置,但你不是。因此,我将开始质疑托管环境和fs层。