我的问题
我有一个脚本可以将 PDF 生成为“一次性”。然后我的脚本读取文件并将其发送到浏览器。
我遇到的问题是,一旦文件成功发送到浏览器,我就需要删除它。
我知道检测用户是否已完全下载文件可能存在问题,这就是我问这个问题的原因......
是否有可靠的方法将文件发送到浏览器,然后在完全发送/下载到客户端浏览器/计算机后将其删除?
我的研究
我已经搜索了很多,可以看到这可能是不可能的。以下问题提供了有关该主题的一些信息:
这两个问题似乎相互矛盾,一个说如果你使用ignore_user_abort
etc 就可以做到,另一个说不能做到......
我知道另一个潜在的解决方案是简单地运行一个 cronjob/scheduled 任务来删除任何超过 X 分钟的文件......我将把它作为我的最后一个选择
我试过的
到目前为止,我已经玩了一些东西,但还没有任何效果......我的代码看起来像这样:
// Set the headers to PDF
header('Content-type: application/pdf');
// Read the file and send it to the browser
readfile($this->paths['WWW'].'/test.pdf');
// Delete the file
unlink($this->paths['WWW'].'/test.pdf');
更新
我刚刚重新测试了我的代码,它似乎工作得很好......文件上有一个权限错误,所以当我调用它时它没有被删除unlink
。
但是,我对使用这种方法还是有点谨慎。我可以确定文件将被发送,然后在发送后删除吗?
我已经用一个大的 PDF 文件对此进行了测试,它确实有效,因此上述解决方案实际上可能是正确的。如果有人希望分享或可以看到此方法的任何隐藏问题,我仍然会很感激任何其他想法。