怎样给每一张帖都分别统计出独立访问IP数 想铁血网www.tiexue.net那样,他每一张帖都能统计出访问IP数,到底怎样实现的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 帖子id | ... | ip访问数量 | 曾访问的ip地址-------------------------------------------------------------------0 | ... | 3 | 192.168.0.1,192.168.0.2,192.168.0.3,帖子表加两个字段,ip访问数量,曾访问的ip地址.当读取这个帖子时,将曾访问的ip地址字段取出,用explode函数将字符串转化为数组,用$_SERVER['REMOTE_ADDR']与曾访问的ip地址这个字段的循环比较下,如果没有相同的:"UPDATE [帖子表] SET [ip访问数量] = [ip访问数量]+1 AND [曾访问的ip地址] = [曾访问的ip地址]".$_SERVER['REMOTE_ADDR']."',' WHERE [帖子id] = [帖子id]";如果有相同的不做处理. 记录浏览者ip然后使用select distinc... 如果你想要非常准确的独立访问量,那你的数据存储量就太大了。我们是这样实现的。一个字段是counter,另一个字段是记录最后一个访问ip。当一个人访问的时候如果ip和最后的ip相同,就不做处理,不同则counter++,并更新最后的ip这样,一个帖子所占的数据空间就很少了。但结果是和真是的数据有差距。如果要非常精确的,只能用一个ip一个记录,或者一个记录加一个非常长的字段。 的确很麻烦.每次读帖都要对比IP,很耗资源哦."一个字段是counter,另一个字段是记录最后一个访问ip。当一个人访问的时候如果ip和最后的ip相同,就不做处理,不同则counter++,并更新最后的ip"这样可能不行,太不准了. 不能要求完美,性能和功能不能兼得的。一个字段存储所有的ip,那每次访问这个页面的时候都得先select,切割,对比,update操作比较多,速度不敢恭维。如果一个ip一个记录,则打开的时候先看有没有相同ip,这个时候如果索引设置正确则能很快,判断是否有记录,没有则insert,但表里的数据量庞大的时候(一个帖子访问量几千甚至上万),insert一次就需要改写一次索引,而这个索引也会变得越来越大,插入动作越来越慢。我们是用了非准确的方法,对照最后一个ip,因为没有必要太准确的数字,换来的则是性能上的大量提高。 那就加一个字段,访问的id数量.向客户端写入cookie,cookie记录下帖子的id,当读取这个帖子的时候,读取客户端的cookie,首先看看$_COOKIE['access']是否为空,不为空再看看是否对应当前的帖子id,也对应的话就不做处理,否则,就setcookie('access',$帖子id);当然你可以给cookie设定失效时间,比如10个小时左右.一般来说,很少有客户端会频繁更换IP. 用51la似乎没法将结果及时反馈回来.记录ip那个方法有点投机了,其实应该再建个表,单独存储帖子的访问过的ip地址,然后再比较的时候就不用切割了,不过链接查询也会造成效率降低.用cookie应该是最好的选择了. 求一段代码,求高手热心为我解答 【求助】谁有 Javascript 并结合 XML 制作滑动透明的菜单 谁能黑我网页,黑成功有奖! AppServ 是怎样使用的? 请问php团队开发用什么的管理软件保持同步 处理大数据高并发问题 Call to undefined function mysql_connect()的问题 我刚下了gd2.0-15,怎么配置才能让PHP支持它啊? 不对啊,是不是搞错了 这种正则表达式,该怎么写呢? php上传加入flash进度条 一个很难的正则表达式
-------------------------------------------------------------------
0 | ... | 3 | 192.168.0.1,192.168.0.2,192.168.0.3,
帖子表加两个字段,ip访问数量,曾访问的ip地址.当读取这个帖子时,将曾访问的ip地址字段取出,用explode函数将字符串转化为数组,用$_SERVER['REMOTE_ADDR']与曾访问的ip地址这个字段的循环比较下,如果没有相同的:
"UPDATE [帖子表] SET [ip访问数量] = [ip访问数量]+1 AND [曾访问的ip地址] = [曾访问的ip地址]".$_SERVER['REMOTE_ADDR']."',' WHERE [帖子id] = [帖子id]";
如果有相同的不做处理.
然后使用select distinc...
我们是这样实现的。
一个字段是counter,另一个字段是记录最后一个访问ip。
当一个人访问的时候如果ip和最后的ip相同,就不做处理,不同则counter++,并更新最后的ip
这样,一个帖子所占的数据空间就很少了。
但结果是和真是的数据有差距。
如果要非常精确的,只能用一个ip一个记录,或者一个记录加一个非常长的字段。
每次读帖都要对比IP,很耗资源哦.
"
一个字段是counter,另一个字段是记录最后一个访问ip。
当一个人访问的时候如果ip和最后的ip相同,就不做处理,不同则counter++,并更新最后的ip"
这样可能不行,太不准了.
一个字段存储所有的ip,那每次访问这个页面的时候都得先select,切割,对比,update
操作比较多,速度不敢恭维。
如果一个ip一个记录,则打开的时候先看有没有相同ip,这个时候如果索引设置正确则能很快,判断是否有记录,没有则insert,但表里的数据量庞大的时候(一个帖子访问量几千甚至上万),insert一次就需要改写一次索引,而这个索引也会变得越来越大,插入动作越来越慢。
我们是用了非准确的方法,对照最后一个ip,因为没有必要太准确的数字,换来的则是性能上的大量提高。
向客户端写入cookie,cookie记录下帖子的id,当读取这个帖子的时候,读取客户端的cookie,首先看看$_COOKIE['access']是否为空,不为空再看看是否对应当前的帖子id,也对应的话就不做处理,否则,就setcookie('access',$帖子id);当然你可以给cookie设定失效时间,比如10个小时左右.一般来说,很少有客户端会频繁更换IP.