[英]PHP & MySQL best way to count page views for dynamic pages
为动态页面计算页面浏览量的最佳方法是什么,如下面的url示例? 我正在使用PHP和MySQL。 简短的解释会有所帮助。 谢谢!
通常表结构如下所示:
表页:
id | name | ...
==========================
1 Some Page
2 Some Other Page
table pages_views:
page_id | views
================
1 1234
2 80
其中pages_views在page_id
上有唯一索引
用于递增视图的MySQL语句如下所示:
INSERT INTO `pages_views` SET views=1 WHERE page_id=?
ON DUPLICATE KEY UPDATE views=views+1 ;
由于pages_views.page_id
是唯一的,因此如果页面的行不存在,则会创建该行; 如果它存在(这是“重复键”子句),计数器将递增。
我在这里选择了两个单独的表,因为CMS页面通常不会经常更新(因此,它们的负载主要是读取),而页面视图则通过每个页面视图进行读取和更新。
好吧,你可以简单地在你的页面表中添加一个字段综合pageviews
,并在每个页面加载时进行UPDATE pageviews = pageviews +1 WHERE id = 1
查询
为了按日/周/月/年查看统计数据,我制作了两张表。 第一个存档所有访问该网站,我的页面和ID保存在同一行。 第二个表记录了统计数据,如Piskvor所描述的。
好处是我可以随时查看我想要的任何页面和ID的统计信息(但随着时间的推移,这将是很多行...)或者我可以简单地查看总页面浏览量。 对于我网站的访问者,我从第二个表中提供信息,但我的管理面板充分利用了第一个表。
statsEach
- statID
- page (example: page 100 is index.php, or 210 is news.php)
- id (example: 1 is news story 1, 2 is news story 2,...)
- date
- time
- user
和
statsTotal
- statTotalID
- page
- id
- total
我不知道你需要/想做什么,或者即使我的桌面结构最好,但这对我有用。
这是我的代码,当我打开页面时它正常工作或当我刷新页面时,页面视图增加1.如果page_id不存在,它将插入一个views = 1的记录,如果page_id存在,它将增加观点
`INSERT INTO pages_views ( pages_id, views) VALUES ( $page_id, 1) ON DUPLICATE KEY UPDATE views=views+1`
使用PDO,您将拥有类似的内容
$sql = "INSERT INTO pages_views ( pages_id, views) VALUES ( :pageId, 1) ON DUPLICATE KEY UPDATE views=views+1";
$q = $conn->prepare($sql);
$q->execute(array(':pageId'=>$pageId));
只需在当前投放的帖子上增加一个整数即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.