php - 如何使用 PHP 和 MySQL 收集站点浏览量统计数据,例如每日、每周、每月和每年的浏览量?
问题描述
我目前正在为网站构建管理界面,并且正在使用 PHP 和 MySQL。如何收集观看次数并按日、周、月和年进行分类?
解决方案
如果您需要准确的统计数据,您可以为所有访问创建一个表,如下所示:
+----+----------------------------+------------------+
| id | Info | date |
+----+----------------------------+------------------+
| 1 | {"use_proxy":true,ecc...} | 28/03/2020 10:00 |
+----+----------------------------+------------------+
| 2 | {"use_proxy":false,ecc...} | 20/04/2020 10:00 |
+----+----------------------------+------------------+
| 3 | {"use_proxy":false,ecc...} | 05/02/2020 10:22 |
+----+----------------------------+------------------+
CREATE TABLE `views` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`Info` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
`date` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
KEY `id` (`id`) USING BTREE,
PRIMARY KEY (`id`)
);
您可以使用此查询来选择特定日期的查看次数吗:
SELECT SUM(id) AS views FROM views WHERE DAY(date) = 05 && MONTH(date) = 02 && YEAR(date) = 2020
推荐阅读
- python - 如何根据 PySpark 数据框中的另一列删除数组类型列的值?
- java - 为什么使用 Spring Data JPA 更新实体时 @Transactional 隔离级别不起作用?
- javascript - 如何使用 DOM 为 JS 中的变量赋值?
- azure - 资源“someid”不存在或其查询的引用属性对象之一不存在
- ansible - 是否可以在 Ansible Playbook 中编写这些命令?
- html - 让 CSS 应用于单个单词?
- c# - 如何使用 C# 编辑数据表列标题名称?
- angular - 升级不使用 firebaseui 和 Angular 的匿名用户
- c++ - 从 std::FILE* 创建 GIO GFile 或 GInputStream
- flutter - Flutter多个`MaterialApp`导致冲突