繁体   English   中英

PHP的Apache和临时文件

[英]php apache and temporary files

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

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

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

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

如果apache因为不在Web根目录之外而无法访问/ tmp,则可能可以在Web根目录中创建指向/ tmp / filename的符号链接吗? (尽管有时需要清理符号链接。)

建议/评论最好的方式来管理这些临时文件?

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? 

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

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

用于文件下载的HTTP标头

这种方法的另一个好处是,由于用户和文件之间存在PHP,因此可以完全控制您。 这意味着您可以添加其他安全措施(例如,时间控制),从各个位置提取文件以分配带宽使用率,等等。

[其他材料]

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

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

希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM