如何检查该文件是否完整,并且没有被php中的其他应用程序使用

时间:2012-03-19 12:27:49

标签: php fopen filesize

我的服务器中有一个文件每5分钟更新一次。该文件通过ftp上传,并在上传完成后进行更新。 我正在使用php脚本来获取此文件的数据,我想确保每次我的脚本读取此文件时,它都是完整且有效的(它不会同时上传)。

以下代码是否安全且适合此检查?

if ( (($handle = fopen('/var/import/data.csv', 'r')) !== FALSE) && (filesize('/var/import/data.csv')>10) ) {

....do stuff....

}

2 个答案:

答案 0 :(得分:1)

您应该在更新文件时编写一个锁文件,并在更新完成后将其删除。然后检查所说的锁文件,知道你是否可以读取它。

答案 1 :(得分:0)

我将ftp上传视为两个阶段

  1. 上传(作为新文件)
  2. 重命名(覆盖以前的版本)
  3. 大量可降低脚本查看不完整文件的几率。

    或者,检查文件的修改时间(mtime),并且仅在文件超过30秒时访问该文件。请确保此时间超过上传时间。