Heim >Backend-Entwicklung >PHP-Tutorial >mysql设计,统计脚本执行的间隔时间。解决方法

mysql设计,统计脚本执行的间隔时间。解决方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-13 11:55:28792Durchsuche

mysql设计,统计脚本执行的间隔时间。

本帖最后由 mumubangditu 于 2014-03-29 19:56:24 编辑 我有一个RSS程序,想统计一下:是其他网站的服务器订阅了我的RSS,还是普通客户通过浏览器打开执行。
现在的思路是:统计每个IP地址的访问频率用以区分。如果是其他网站的服务器订阅了我的RSS,那么一定是用自动程序定时执行,每次执行间隔时间是一个定数,比如每60分钟,每90分钟访问一次。

$ip=$_SERVER['REMOTE_ADDR'];

这样的情况,怎样设计mysql数据库呢? 本次访问时间-上次访问时间;上次访问时间-前次访问时间;再前次访问时间-前次访问时间(应该还须考虑一个每次脚本打开完成时间的误差可能正负几秒)... 这样的情况统计5次,大概可以确定该IP是自动程序,下次无需再统计。
------解决方案--------------------
本帖最后由 xuzuning 于 2014-03-29 20:07:08 编辑 两个字段:ip, time(unix时间戳)
判定条件:对于同一ip  (max(time) - min(time)) / count(*) = avg(time) - min(time)
算法依据:等差数列的性质
------解决方案--------------------
其实你还可以判断User-Agent信息。
------解决方案--------------------
确定是server的,应该放在另一个表(例serverlist)中记录。
首先,版主讲的是每一次有访问且未确定是否服务器,都将ip与访问时间写入一个表(例accesslog)。每次写入后,判断是否服务器访问。(通常要几次才可以确定)
如果是,在serverlist插入一条记录,并把accesslog对应ip的记录删除。
当这个服务器再访问时,先判断serverlist有没有这个ip,如果有,则不写入accesslog。
------解决方案--------------------
登记访问信息,当然是流水账
只需 insert 即可,分析计算一般也只需一条 update
弄的好的话,还可以用 view

如果你不把登记当做流水账则需先 select 定位,然后 update 修改
最后再分析计算
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn