我有一个RSS程序,想统计一下:是其他网站的服务器订阅了我的RSS,还是普通客户通过浏览器打开执行。
现在的思路是:统计每个IP地址的访问频率用以区分。如果是其他网站的服务器订阅了我的RSS,那么一定是用自动程序定时执行,每次执行间隔时间是一个定数,比如每60分钟,每90分钟访问一次。
$ip=$_SERVER['REMOTE_ADDR'];
这样的情况,怎样设计mysql数据库呢? 本次访问时间-上次访问时间;上次访问时间-前次访问时间;再前次访问时间-前次访问时间(应该还须考虑一个每次脚本打开完成时间的误差可能正负几秒)... 这样的情况统计5次,大概可以确定该IP是自动程序,下次无需再统计。
两个字段:ip, time(unix时间戳)
判定条件:对于同一ip (max(time) - min(time)) / count(*) = avg(time) - min(time)
算法依据:等差数列的性质
其实你还可以判断User-Agent信息。
两个字段:ip, time(unix时间戳)
判定条件:对于同一ip (max(time) - min(time)) / count(*) = avg(time) - min(time)
算法依据:等差数列的性质
确定是server的,应该放在另一个表(例serverlist)中记录。
首先,版主讲的是每一次有访问且未确定是否服务器,都将ip与访问时间写入一个表(例accesslog)。每次写入后,判断是否服务器访问。(通常要几次才可以确定)
如果是,在serverlist插入一条记录,并把accesslog对应ip的记录删除。
当这个服务器再访问时,先判断serverlist有没有这个ip,如果有,则不写入accesslog。
另外,可以用user-agent来判断是否server访问。
什么是服务器访问呢?
什么服务器会订阅你的 rss ?
或是说什么网站会把你的 rss 存储于自己的数据库中?
另外,可以用user-agent来判断是否server访问。
什么是服务器访问呢?
什么服务器会订阅你的 rss ?
或是说什么网站会把你的 rss 存储于自己的数据库中?
怎么说?到底什么用什么方法?2个字段可以吗?
所以说 2 个字段就可以满足记流水账的需要了
至于分析的结果是否也保存在同一个表中,那是由你决定的。如果是,当然还需要增加些字段
所以说 2 个字段就可以满足记流水账的需要了
至于分析的结果是否也保存在同一个表中,那是由你决定的。如果是,当然还需要增加些字段
登记访问信息,当然是流水账
只需 insert 即可,分析计算一般也只需一条 update
弄的好的话,还可以用 view
如果你不把登记当做流水账则需先 select 定位,然后 update 修改
最后再分析计算
登记访问信息,当然是流水账
只需 insert 即可,分析计算一般也只需一条 update
弄的好的话,还可以用 view
如果你不把登记当做流水账则需先 select 定位,然后 update 修改
最后再分析计算
结贴了。想的差不多了。