0

想象以下场景:

  • 客户端(浏览器)调用 PHP 脚本
  • 脚本在 web_root/downloads/tmp/test.zip 中生成一个 ZIP 文件
  • 脚本相应地返回标头,因此启动该 ZIP 文件的下载
  • 脚本终止目录 web_root/downloads/tmp/

会发生什么?

  1. 服务器排队删除并尽快删除文件夹
  2. 目录(和文件)被删除,客户端因此失去连接
  3. 服务器拒绝删除,因为目录以某种方式被锁定
  4. Apache 在流式传输文件之前实际上会克隆/缓存文件,因此删除原始文件将无效

哪一个是正确的?

现在,我可以在自己的服务器上测试这种行为,但我想知道在这种情况下是否存在任何定义基于 UNIX/LINUX 的标准行为的约定?

此类案件一般如何处理?

4

1 回答 1

1

5.Apache 已打开文件系统 inode,因此当您删除文件时,它并没有被删除,而是被取消链接。也就是说,链接 web_root/downloads/tmp/test.zip 被删除了,但只要 apache 打开了 inode,inode 仍然存在。当 apache 关闭 inode 时,其链接计数达到零并被系统删除

于 2013-09-24T12:47:10.297 回答