删除临时符号链接会中断当前下载/访问该符号链接吗?

时间:2010-06-08 05:16:14

标签: php symlink

我正在使用PHP生成的符号链接。它们是在有人请求下载时生成的,我希望它们在每天结束时到期。

问题是,如果有人在一天结束前1分钟开始下载符号链接,然后在下载时删除符号链接,该怎么办...

我的问题是,据您所知,个人下载符号链接,在我删除之前,仍然可以“下载”该文件?我并不担心“可恢复的下载”功能..但它会以某种方式停止或中断下载吗?

3 个答案:

答案 0 :(得分:7)

是的,你可以这样做。

在类UNIX系统(包括Linux)上,您不会删除文件。您删除文件名。如果删除其他人当前打开的文件,文件名将会消失,但数据将保留在磁盘上,直到文件关闭。

使用符号链接更是如此:如果删除符号链接,文件数据仍然存在,并且文件打开的任何进程都通过文件句柄而不是文件名引用它。

因此,只要在脚本打开文件后删除符号链接,下载就会毫无困难地完成。

答案 1 :(得分:2)

只要网络服务器保持文件打开,直到下载完成,我期望它。这样可以正常工作。在Linux上,您甚至可以将 hardlink 删除到文件中,只要文件保持打开状态,网络服务器仍然可以从中读取

答案 2 :(得分:1)

我的经验另有说法。 如果中断(在连接中),或者用户选择暂停下载,则浏览器将无法始终恢复(因为链接已消失)。

我尝试过IE9x Chrome23.x Firefox17.x(在Apache Shared Server上)

我做的是将符号链接放在唯一的文件夹中,并根据时间删除文件夹。在我的情况下,我在30分钟后(我下载文件的合理时间)终止文件夹(并且它包含了符号链接)。

(我不能相信这个想法---在其他地方看到它) 我会说有时可以恢复非常短暂的中断或暂停。