在我的网站上,用户可以上传文件(图片,邮政编码,音频,视频等)。然后,他可能决定用更新版本替换它。这个用户可以上传一个文件,发帖然后决定换一个新版本替换旧文件(比如说它是一个大的zip或tar.gz文件)。如果他向家庭用户发送电子邮件甚至即时通讯,那么人们很可能会下载它。
问题。我需要更换文件,人们可能正在下载,可能需要几分钟才能删除。我不希望我的代码停止,直到我无法删除或检查每一秒是否未使用(特别是如果另一个用户可以启动,并且他需要很长时间创建一个循环)。
如何在用户下载文件时删除文件?我不在乎他们是否停止我只关心文件可以被替换,新的下载是新版本。
答案 0 :(得分:4)
间接引用文件怎么样?
映射脚本,将您站点的虚拟文件条目映射到真实文件。如果用户想要上传他的文件的新版本,则只需更新映射,而不是真实文件。
您可以安装扫描所有文件的日常任务,并删除所有文件而不使用映射且没有打开的连接。
答案 1 :(得分:3)
lajuette的答案是对的,最简单的解决方案是完全解决文件锁定问题:
编写清理旧的未映射文件的计划任务并不难。
答案 2 :(得分:1)
如果您反对某个数据库,并且如果文件名是固定格式(例如user / id.ext),您可以使用修订号附加id并使用模式枚举该文件夹(user / id- *)并使用最新版本。