【问题标题】:php apache and temporary filesphp apache和临时文件
【发布时间】:2010-08-25 15:24:59
【问题描述】:

我有一个基于 Web 的应用程序,它通过与肥皂服务器交互来将内容服务器提供给经过身份验证的用户。肥皂服务器具有用户需要能够下载的文件。

向用户提供这些文件的最佳方式是什么?当用户请求一个文件时,我的服务器将对soap服务器进行soap调用以提取文件,然后它将通过引用它的链接将其提供给用户。

问题是这些临时文件需要在某个时候清理,我的第一个想法是这是一个基于 linux 的系统,将它们存储在 /tmp/ 并让系统负责清理。

Is it possible to store these files in /tmp and have apache serve them 
to the user?  

如果 apache 无法访问 /tmp,因为它位于 web 根目录之外,我是否可以在 web 根目录中创建指向 /tmp/filename 的符号链接? (这需要在某些时候清理符号链接。)

关于管理这些临时文件的最佳方法的建议/cmets 是否受到赞赏?

I am aware that I could write a script and have it executed as a cron job on 
regular intervals but was wondering if there was a way similar to presented 
above to do this and not have to handle deleting the files? 

【问题讨论】:

    标签: php apache download


    【解决方案1】:

    Apache 很有可能可以读取 tmp 目录,但这种方法听起来很糟糕。我的方法是让 PHP 读取文件并将其发送给用户。基本上,您发送适当的 HTTP 标头以指示您发送的内容类型以及文件使用的名称,然后您只需使用 echo 输出文件(例如)。

    似乎在另一个问题中对此进行了很好的讨论:

    HTTP Headers for File Downloads

    这种方法的另一个好处是它让您可以完全控制,因为用户和文件之间存在 PHP。这意味着您可以添加额外的安全措施(例如,时间控制)、从不同位置提取文件以分配带宽使用量,等等。

    [补充材料]

    很抱歉没有直接解决您的问题。如果您使用 PHP 来提供文件,则它们不需要驻留在 Apache Web 根目录中,而 Apache/PHP 对它们具有文件系统读取访问权限。因此,您确实可以简单地将它们存储在 /tmp 中并让操作系统为您清理它们。但是,您可能需要调整这些清理的频率,以将音量保持在您想要的水平。

    如果您想确保在一段时间或一定次数的下载后可靠地拒绝访问,您可以将跟踪信息存储在您的数据库中(例如,在用户上显示他们已下载文件的标志),然后使用您的下载脚本进行检查,并可能拒绝下载。这有效地将访问安全性与清理频率分开,您可能需要单独调整这两件事。

    希望对您有所帮助....

    【讨论】:

    • 是的,你的前几句话正是我的做法,但这并没有解决如何“清理”这些文件,因为我们不想用我们可以检索的附件填满服务器通过肥皂。
    猜你喜欢
    • 2013-02-02
    • 2010-10-02
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    相关资源
    最近更新 更多