我想在我的网站上添加一个访客计数器。
最大数据:
每分钟 100 万次观看
每页加载 6 个查询
所以我问你, MYSQL 和 PHP 是唯一的访客计数器的最佳解决方案吗?
还是我应该使用不同的东西?
我想在我的网站上添加一个访客计数器。
最大数据:
每分钟 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 请求。