我们使用普通的 PHP 下载脚本(带有 header 等)向用户提供文件。
然而,问题是对于某些浏览器和大量下载,会多次请求下载脚本。 NGINX 日志显示带有 206 状态代码的请求(暗示分块流式传输?)这很奇怪,因为我们不提供任何可流式传输的内容?
无论如何,这意味着下载脚本被多次请求,因此每次下载多次运行 MySQL 函数 +1 文件的下载计数器。
我们尝试使用 session ,但看到下载与外部服务器 + 域断开,我们无法在设置后清除所述 session 。
我们将 Laravel 与 NGINX + MySQL 一起使用,我们将不胜感激。谢谢!
最佳答案
查看最终导致 206 响应的请求的规范和 header ,有一个 header 被删除,看起来很完美。
有问题的 header 是 Content-Range
header ,它可能如下所示:
Content-Range: bytes 21010-47021/47022
这意味着它想要从 47022 字节中获取字节 21010-47021。您只需要担心这里的第一个数字,以及它是否为 0。如果 header 已设置且第一个数字为 0,您可以假设它刚刚开始下载并且您应该增加计数器。
关于php - 下载计数器功能不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096479/