PHP&;MySQL统计动态页面浏览量的最佳方法

PHP&;MySQL统计动态页面浏览量的最佳方法,php,mysql,Php,Mysql,计算动态页面(如下面的url示例)的页面浏览量的最佳方法是什么?我正在使用PHP和MySQL。简短的解释会有所帮助。谢谢 通常表结构如下所示: 表页: id | name | ... ========================== 1 Some Page 2 Some Other Page 表页和视图: page_id | views ================ 1 1234 2 80 其中页面视图在page\u

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


通常表结构如下所示:

表页:

id | name            | ... 
==========================
1    Some Page
2    Some Other Page
表页和视图:

page_id | views
================
1         1234
2         80
其中页面视图在
page\u id

用于增加视图的MySQL语句如下所示:

INSERT INTO `pages_views` SET views=1 WHERE page_id=?
    ON DUPLICATE KEY UPDATE views=views+1 ;
由于
pages\u views.pages\u id
是唯一的,因此如果该页的行不存在,将创建该行;如果存在(即“复制密钥”子句),计数器将递增


我在这里选择了两个单独的表,因为CMS页面通常不会太频繁地更新(因此,它们的负载主要是读取),而页面视图会在每个页面视图中读取和更新。

只需在您当前提供的帖子上增加一个整数即可。

嗯,您只需在pages表中添加一个字段
pageviews
,并对每个页面加载执行
UPDATE pageviews=pageviews+1,其中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


我不知道您需要/想要做什么,甚至不知道我的表结构是否最好,但这对我来说很有用。

这是我的代码,当我打开页面或刷新页面时,它工作正常,页面浏览量增加1。如果页面id不存在,它将插入一个views=1的记录,如果页面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));

localhost
表示“在此计算机上”。我怀疑这个链接只会在你的计算机上运行,因为没有其他人有相同的代码:)我将在以后在真正的服务器上更改它
http://www.example.com/
lol:)啊,好的。我觉得在那个地址上我能看到一些东西:D@ddb只要你能识别你的页面。事实上,mod_rewrite与你的问题有一点关系,是的。我建议使用一个单独的表格,因为CMS内容不会经常更改(主要是在
页面上阅读),而视图会一直更改(在
页面上阅读+写入视图)。很好。用于跟踪每个用户的使用模式。
$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));