相关疑难解决方法(0)

如何在PHP中检测X-Accel-Redirect(Nginx)/ X-Sendfile(Apache)支持?

关于申请

我正在使用PHP开发电子商务应用程序.为了保证URL的安全,产品下载链接保留在PHP之后.有一个文件,比如download.php,它通过GET接受几个参数并根据数据库验证它们.如果一切顺利,它使用PHP中的readfile()函数提供文件.

关于问题

现在问题来自传递给readfile()的文件大于php.ini中设置的内存限制因为这个应用程序将被许多用户用于共享托管,我们无法继续改变php.ini设置.

在我们寻找变通方法的努力中,我首先想到我们可以在while循环中进行fread()调用,但似乎会出现问题以及突出显示在PHP中可靠地下载大文件

所以我最好的选择是检测/检查服务器是否支持X-Accel-Redirect(如果是Nginx)/ X-Sendfile(如果是Apache)

如果服务器支持X-Accel-Redirect/X-Sendfile,我可以使用它们,在else块中我可以让系统管理员知道php.ini强制执行的内存限制

理想情况下,我希望尽可能使用像X-Accel-Redirect/X-Sendfile这样的服务器端支持,如果这不起作用 - 我希望有一个回退代码来读取没有readfile()的文件.

我还不确定while循环中的readfile()和fread()是如何不同的,但似乎while循环会产生问题,再次,如在PHP中可靠地下载大文件中所建议的那样

希望得到一些帮助,建议,代码,指导.

谢谢阅读.

php memory apache nginx large-files

12
推荐指数
2
解决办法
9993
查看次数

标签 统计

apache ×1

large-files ×1

memory ×1

nginx ×1

php ×1