我经营一个为医生销售音频下载的网站。目前,当客户购买播客时,他/她会看到一个直接的 HTML 链接以开始下载。该链接指向一个大小为 1Gb 的 ZIP 文件。我要问的一个问题是,为什么在 Apache 服务器超时可能几分钟的情况下,下载可能会成功运行几个小时?我认为这个超时是为了让服务器处理 GET 请求并通过输出缓冲区将结果输出发送到浏览器。缓冲区传输给用户可能没有超时。我对么?
我的第二个问题是关于 PHP 超时。我不热衷于下载的 HTML 直接链接,好像该 URL 已为其他用户所知,他们可以免费下载。一种解决方案可能是使用 PHP 脚本通过发送适当的标头来传输下载文件,然后发送预加载下载数据的变量的“回声”。我的问题是 php.ini 文件中的超时是否会影响下载。这些脚本通常需要 30 秒才能完成。那么,脚本是否在下载过程中运行?或者脚本是否快速完成并将下载数据放入 PHP 输出缓冲区。如果是后者,缓冲区清空是否有任何超时?
我想我必须为 php.ini 中的“memory_limit”设置一个较大的值(默认为 128Mb)以允许 1Gb 下载的大小。