繁体   English   中英

PHP和MySQL计算动态页面页面视图的最佳方法

[英]PHP & MySQL best way to count page views for dynamic pages

为动态页面计算页面浏览量的最佳方法是什么,如下面的url示例? 我正在使用PHP和MySQL。 简短的解释会有所帮助。 谢谢!

http://www.example.com/posts/post.php?id=3

通常表结构如下所示:

表页:

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));

只需在当前投放的帖子上增加一个整数即可。

可以在http://www.configure-all.com/page_view_counter.php找到一个简单的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM