php - 下载计数器功能不准确

标签 php mysql laravel nginx

我们使用普通的 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/

相关文章:

Mysql在同一列中加入多个索引

mysql - 如何在不指定列的情况下过滤结果

mysql - Laravel 5 中的全文搜索

php - 在 Laravel 中没有先开始一个部分就不能结束一个部分

php - laravel Controller 内部是否需要 try catch block ?

php - 多张照片上传php mysql

php - 不同的结果在 mysql 中

php - 检测文件上传需要多长时间 (PHP)

php - 使用 Y/m/d 按月组织帖子列表

java - Grails - Spring Security 无法与 Mysql 8 一起使用