php - 如何设计用于文件下载统计的数据库表

标签 php mysql database database-design statistics

<分区>

我有一个 web 应用程序,我在其中使用 php 提供文件下载服务。 一切正常,我在 file field 中有下载栏我在哪里增加它。

但我想获得完整的下载统计数据,例如 each day 上的下载量或在 monthtime of day或来自 which location

但我无法找到如何为此设计 mysql 表。我是否需要为此在数据库中记录每个下载请求。现实世界中的任何设计模式或示例

最佳答案

创建一个类似如下的表:

+-------------+---------------------+------+-----+-------------------+----------------+
| Field       | Type                | Null | Key | Default           | Extra          |
+-------------+---------------------+------+-----+-------------------+----------------+
| download_id | bigint(20) unsigned | NO   | PRI | NULL              | auto_increment |
| created     | timestamp           | NO   | MUL | CURRENT_TIMESTAMP |                |
| filename    | varchar(32)         | YES  | MUL | NULL              |                |
| ip          | int(10) unsigned    | NO   | MUL | NULL              |                |
+-------------+---------------------+------+-----+-------------------+----------------+

每次下载文件时,将文件名和 IP 地址插入相应的列(其他两列将自动填充正确的信息)。然后您可以对该表执行查询以收集您的分析。例如:

如果您想查看 2013 年 6 月的下载量:

SELECT COUNT(*) AS total_downloads FROM file_download WHERE DATE(created) BETWEEN '2013-06-01' AND '2013-06-30';

如果您想查看文件“somefile.zip”自发布后被下载了多少次:

SELECT COUNT(*) AS total_downloads FROM file_download WHERE filename = 'somefile.zip';

或者如果您想查看“somefile.zip”被下载了多少次,不包括同一访问者下载的重复项:

SELECT COUNT(*) AS total_downloads FROM file_download WHERE filename = 'somefile.zip' GROUP BY ip;

通过为每次下载记录一个条目,您可以非常灵活地选择可以分析的数据类型。每个条目占用的空间量将是最小的,并且与为每次下载递增单个值相比,您可以访问更多选项。

关于php - 如何设计用于文件下载统计的数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17939669/

相关文章:

php - sphinx 中的排序结果?

mysql - 仅当新值不为空时才在 DUPLICATE KEY UPDATE 上合并两个表

mysql - 获取付费非付费客户端Mysql Joins

sql - 处理 "Insert Into TABLE Values()"语句中的标识列?

php - Laravel 文件上传只需将文件名发送到 Controller

php - fatal error : Exception thrown without a stack frame in Unknown on line 0, session_start

javascript - jquery中的多维数组

php - 如何从 cakephp 默认布局调用 Controller ?

sql - 为有异常(exception)的重复事件设计的数据库

sql - 历史/可审核的数据库