我有一个 MySQL 表views
,用于跟踪网页上的 View 。该表的结构如下:
CREATE TABLE views (
id int(11) not null auto_increment,
page int(11) not null,
pglast DATETIME not null,
pgviews int(11) default 0,
primary key(id),
unique key page (page)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
page
列是查看的页面的 ID,pglast
列用于保存上次访问页面的时间。 pglast
通常看起来像:
2018-12-03 14:57:57
pgviews
列用于保存访问次数,该列通常如下所示:
7
我不会每次访问页面时都添加行,而只是更新
记录:我更新pglast
列并增加pgviews
列。
我想要什么:
显示今天、本月和全年的观看量。
是否可以执行我想要的操作,或者我是否必须添加包含访问日期的访问行?当然,在页面访问时添加行的缺点是,如果访问量很大,它可能会变得很满,而简单地更新记录则更具可扩展性......
最佳答案
要完成您想要的操作而不为每次访问添加行,您可以执行以下操作:
CREATE TABLE views (
id int(11) not null auto_increment,
page int(11) not null,
pglast DATETIME not null,
pgviews int(11) default 0,
pgviews_day int(11) default 0,
pgviews_month int(11) default 0,
pgviews_year int(11) default 0,
primary key(id),
unique key page (page)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
每次访问都会增加 pgviews_day、pgviews_month 和 pgviews_year。运行一个 cronjob,分别在每天、每月和每年重置 pgviews_day、pgviews_month 和 pgviews_year。
关于php - 使用 PHP 显示网页今天、月份和年份的 View ,无需添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53692778/