2010-08-25 93 views
0

我有一个基于Web的应用程序,该服务器的内容通过与soap服务器交互来验证用户身份。肥皂服务器具有用户需要能够下载的文件。php apache和临时文件

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

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

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

如果Apache无法访问/ tmp目录,因为它是Web根目录之外,可能我可以创建网站根目录下的符号链接到/ tmp /文件名? (这需要清除符号链接,但在某些时候。)

建议/意见赞赏最佳方式来管理这些临时文件?

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? 

回答

2

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

它看起来像有这样的一个问题一个很好的讨论:

HTTP Headers for File Downloads

这种方式的另外一个好处是,它让你在完全控制,因为有一个用户和文件之间PHP。这意味着您可以添加额外的安全措施(例如,时间控制),从各个地方提取文件以分发带宽使用等等。

[附加材料]

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

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

希望这是更有帮助....

+0

是你的第一个几句话正是我过得怎么样,但这个并没有解决如何“清理”这些文件,因为我们不希望填补服务器与我们可以通过肥皂检索附件。 – Chris 2010-08-25 16:28:11

+0

感谢您的链接,但很好的信息。 – Chris 2010-08-25 16:30:29