我想在我的网站上添加一个访问者计数器。
最大统计数据:
每分钟100万次观看次数
每页加载6个查询
所以我问你, MYSQL和PHP是否是唯一的访问者计数器最佳解决方案?
或者我应该使用不同的东西?
答案 0 :(得分:2)
每分钟有100万次观看,你可以计算点击计数器的视图(此外还有重复检查)... php / mysql不会很好用(除非你有一大堆服务器)。
如果你需要实时点击couting,我会使用nginx + redis http://redis4you.com/code.php?id=009 + javascript的组合,而不是使用php和mysql。
1 - Jquery(或javascript)可以检查用户是否有cookie,如果没有,则保存一个"唯一的随机哈希cookie"对于每个(用户+页面)(不要只使用ip,因为代理后面的多个用户可以使用相同的ip,例如:拥有代理互联网,大学,公共wifi等的大公司)。 / p>
2 - 生成哈希后,或者如果cookie存在,Jquery可以决定使用哈希作为标识符对nginx服务器执行异步请求。
3 - Nginx可以通过上游(非常快)(https://github.com/openresty/redis2-nginx-module)直接与redis对话,如果需要,它还可以检查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请求。