独特的高流量访客计数器


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,如果没有,则为每个(用户+页面(保存一个"唯一的随机哈希cookie"(不要只使用IP,因为代理后面的多个用户可以使用相同的IP,例如:拥有互联网代理,大学,公共wifi等的大公司(。

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

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

4 - Redis 非常快,可以根据键值(例如:页面 ID(自动递增值(命中(,在重新启动后幸存下来(与 memcache 不同(。

5 - 您可以轻松地从 php 查询 redis(如 memcache(以在任何页面上显示命中计数。

===

另一种可能的方法(但不是实时的(是使用 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 的请求。