【问题标题】:Download counter function inaccurate下载计数器功能不准确
【发布时间】:2016-03-09 20:47:31
【问题描述】:

我们使用普通的 PHP 下载脚本(带有标题等)向用户提供文件。

但问题在于,对于某些浏览器和大型下载,下载脚本会被多次请求。 NGINX 日志显示带有 206 状态代码的请求(建议分块流式传输?)这很奇怪,因为我们不提供任何可流式传输的内容?

无论如何,这意味着下载脚本被多次请求,因此每次下载都会运行多次为文件的下载计数器 +1 的 MySQL 函数。

我们尝试使用会话,但由于下载与外部服务器 + 域断开,我们无法在设置后清除所述会话。

我们将 Laravel 与 NGINX + MySQL 结合使用,我们将不胜感激。谢谢!

【问题讨论】:

    标签: php mysql laravel nginx


    【解决方案1】:

    查看最终会导致 206 响应的请求的规范和标头,有一个标头被删除,看起来很完美。

    有问题的标头是 Content-Range 标头,如下所示:

    Content-Range: bytes 21010-47021/47022
    

    这是说它想从 47022 个字节中抓取 21010-47021 个字节。您只需要担心这里的第一个数字以及它是否为 0。如果设置了标头并且第一个数字是 0,您可以假设它刚刚开始下载,您应该增加计数器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 2018-10-18
      • 2014-04-24
      • 2011-02-19
      • 2017-03-29
      • 1970-01-01
      相关资源
      最近更新 更多