php - 独特的高流量访客计数器

php - Unique High Traffic Visitor Counter

我想在我的网站上添加一个访客计数器。

最大统计数据:

每分钟 100 万次观看

每页加载 6 个查询

所以我问你, MYSQL 和 PHP 对于唯一访客计数器是最佳解决方案吗?

或者我应该使用不同的东西吗?

对于每分钟 100 万次观看,您像点击计数器一样计算观看次数(此外还有重复检查)... php / mysql 不会很好地工作(除非您有一大群服务器)。

如果你需要实时命中计算,我会使用 nginx + redis http://redis4you.com/code.php?id=009 + javascript 的组合来做到这一点,根本不使用 php 和 mysql .

1 - Jquery(或javascript)可以检查用户是否有cookie,如果没有,则为每个(用户+页面)保存一个"unique random hash cookie"(不要只需使用 ip,因为代理后面的多个用户可以使用同一个 ip,例如:具有互联网代理的大公司、大学、public wifi 等)。

2 - 生成哈希后,或者如果 cookie 存在,Jquery 可以决定使用哈希作为标识符向 nginx 服务器发出异步请求。

3 - Nginx 可以通过上游直接与 Redis 通信(非常快)(https://github.com/openresty/redis2-nginx-module),如果需要它还可以检查 cookie。

4 - Redis 非常快,可以根据键值(例如:页面 ID)自动增加值(命中),重启后仍然存在(与内存缓存不同)。

5 - 您可以轻松地从 php 查询 redis(如内存缓存)以显示任何页面上的命中数。

===

另一种可能的方法(但不是实时的)是使用 nginx 设置一个盒子并启用访问日志。

1 - 在您的网站上,包含一个 javascript 调用该 nginx 服务器中的文件,如下所示:http://stats.server.com/hit.js?page=12345&userhash=some_md5_hash_here

2 - 在 nginx 服务器上设置 cron 作业以解析这些日志以获得独特的视图。

3 - Nginx 可以轻松地在 E3 1230v2 机器上每秒处理 20K 请求。