0

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

最大数据:

每分钟 100 万次观看

每页加载 6 个查询

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

还是我应该使用不同的东西?

4

1 回答 1

3

对于每分钟 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 请求。

于 2016-01-31T13:49:37.610 回答