![](/img/trans.png)
[英]Need response body of HTTP 500 with file_get_contents (PHP)
[英]Redirect body of HTTP response to file
我正在编程一项必须强制下载文件的服务。
我知道可以使用PHP设置HTTP标头,然后使用readfile-function发送文件。 但是我认为这不是发送较大文件的好方法,因为它将需要大量服务器性能,并且将超出PHP脚本的最大执行时间。
那么有可能使用PHP发送HTTP标头(我必须根据mysql数据库中的条目进行修改),然后让Apache发送文件正文吗? 我必须补充一点,我也可以使用perl脚本,但是在cgi-script中也看不到这样做的可能性。 谢谢。
如果提前知道下载的位置和/或文件类型,则可以使用apache严格执行此操作:
<Location /downloads>
SetEnvIf Request_URI ".attachment-extension$" FILENAME=$0
Header set "Content-disposition" "attachment; filename=%{FILENAME}"
</Location>
因为这需要很多服务器性能
我认为情况并非如此。 只要将文件发送到客户端是脚本在终止之前要做的最后一件事,那么从PHP发送文件和直接让Apache处理文件之间的CPU / RAM性能差异就应该很小。
除非您的服务器上具有非常快速的HDD设置,否则您的服务器上会有大量的Gbps带宽,否则很久就会遇到带宽问题,然后再遇到服务器系统资源问题。
诚然,此讨论主要基于推测(因为我对您的托管设置一无所知),因此YMMV。
将超过PHP脚本的最大执行时间
所以只需调用set_time_limit(0);
。 那是为了什么。
我找到了此链接: http : //jasny.net/articles/how-i-php-x-sendfile/ 。 X-Sendfile是一个模块,它似乎完全允许我要执行的操作。 它重定向HTTP响应的主体,并让Apache处理所有事情。 我刚刚安装并尝试了它,它工作正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.