【发布时间】:2012-02-08 11:50:37
【问题描述】:
我想在服务器上创建一个 FTP drop,文件可以通过 FTP 上传到某些目录,然后由 PHP 脚本处理(作为 cron 作业或守护程序运行)。
FTP文件或从目录中读取文件都没有问题。但是 PHP 脚本如何知道文件上传是否已完成或仍在进行中?
我可以反复检查文件大小是否在一段时间内发生了变化,如果 1 分钟内没有变化,则处理文件。但这似乎不是一个优雅的解决方案,我想它有时可能会出错,例如上传暂停或由于某种原因失败。
另一种方法是在每个文件之后上传一个空白文本文件,名称有所不同(例如competed.filename)。然后脚本可以检查这些文件的存在并处理相应的文件。但这也不是一个优雅的解决方案,并且可能容易在某个地方出错。
如果 FTP 文件上传成功完成,有没有用 PHP 检查的好方法?
【问题讨论】:
-
您考虑过使用校验和吗?
-
我没有想到这一点,但现在看来确实很明显。您的意思是计算哈希值,以某种方式与文件一起发送(作为单独的文件?),然后继续检查它直到它相同?或者有更简单的标准方法吗?
-
Alasadair,我不认为使用校验和是解决这个问题的有效方法。如果文件很大,在不断增长的文件上一次又一次地计算校验和会耗费时间。
-
@SusamPal,是的,好的,这也有道理。
-
有一个类似的问题,我们有一个文本文件,其中包含一些数据和伴随图像的文件名,如何知道伴随文件是否已完成上传以便我们处理它们