搜索
楼主: yanexp

【讨论】奇怪了,关于nwb13与hnroc 两者的显IP地址插件问题!

[复制链接]
 楼主| 发表于 2005-2-20 09:29:35 | 显示全部楼层 来自 中国–广东–广州
出错有什么提示呀,我这是用0.97的,编译很正常呀~

我用0.99的small 2.6.0编译也没问题呀,不知你怎搞的??
回复

使用道具 举报

发表于 2005-2-20 09:48:19 | 显示全部楼层 来自 中国–宁夏–中卫
不好意思 是我弄错了 ,谢谢你的共享精神,我用的是AMX0.99   发现不能使用 ,只要一进人服务器就会挂掉
回复

使用道具 举报

 楼主| 发表于 2005-2-20 10:33:21 | 显示全部楼层 来自 中国–广东–广州
回楼上的:我用的一直很正常呀
数据我是使用
显示玩家IP及城市插件的2月10日IP库
http://www.dt-club.net/showthread.php?t=18240

--------------------------------------------------------------

我终于试出不成理由的卡机原因了

AMX库下的两个表:

ipdatau.MYD  (189,619)条记录 大小:(10.3 MB)

mytable.MYD (183,572)条记录 大小:(9.70 MB)

利用我以上帖出的代码,在查找ipdatau表时没有卡机现象,一改会mytable就会微卡一下,虽然取mytable表是不是我想要的IP地址,
但是点解mytable表要比ipdatau小,查询起来还要这么吃力呢,真是超级的不解了 :30:
回复

使用道具 举报

 楼主| 发表于 2005-2-20 10:50:56 | 显示全部楼层 来自 中国–广东–广州
本想使用mytable表的,因为它比较直观,修改自定义地址比较方便,

ipdatau表里的IP地址是转化后的,我看不明算法,真是没话可说了
回复

使用道具 举报

发表于 2005-2-20 10:55:39 | 显示全部楼层 来自 中国–陕西–西安
format(query,511,"SELECT * FROM mytable WHERE startip<=%s AND endip>=%s",ipp,ipp)

format(query, 1024, "SELECT * FROM %s WHERE StartIP <=%d + 4294967296 ORDER BY StartIP DESC  LIMIT 0 , 1", table, ipaddr)

难道是查询sql的语句有影响?不过我对sql不了解,不知道为什么了。
回复

使用道具 举报

 楼主| 发表于 2005-2-20 11:19:13 | 显示全部楼层 来自 中国–广东–广州
Post by nwb13
format(query,511,"SELECT * FROM mytable WHERE startip<=%s AND endip>=%s",ipp,ipp)

format(query, 1024, "SELECT * FROM %s WHERE StartIP <=%d + 4294967296 ORDER BY StartIP DESC  LIMIT 0 , 1", table, ipaddr)

难道是查询sql的语句有影响?不过我对sql不了解,不知道为什么了。


以上的查询语句我都交换试过了,只是改为mytable表时就微卡,而ipdatau表就没事

以下是两个表的结构图



  1. ipdatau
  2. 字段 类型 Null 默认
  3. StartIP   bigint(20)  否  0  
  4. EndIP   bigint(20)  否  0  
  5. Country   varchar(128) 是   
  6. Prov   varchar(128) 是  NULL  
  7. City   varchar(128) 是  NULL  
  8. Address   varchar(255) 是  NULL  

  9. mytable
  10. 字段 类型 Null 默认
  11. startip   bigint(20) 是  NULL  
  12. endip   bigint(20) 是  NULL  
  13. country   varchar(128) 是  NULL  
  14. area   varchar(128) 是  NULL  

  15.                         [b] ipdatau 表的部分数据[/b]
  16. ===================================================================
  17.       StartIP   EndIP     Country  Prov City Address
  18. ===================================================================
  19.       00663296  150994943 美国     NULL NULL DoD网络信息中心
  20.       150994944 167772159 美国     NULL NULL 纽约IBM公司
  21.       167772160 184549375 局域网   NULL NULL 对方和您在同一内部网
  22.       184549376 201326591 美国     NULL NULL DoD网络信息中心
  23.       201326592 201338879 美国     NULL NULL ATT用户

  24. ------------------------------------------------------------------

  25.                           [b]mytable 表的部分数据[/b]
  26. ==================================================================
  27.       startip     endip           country   area
  28. ==================================================================
  29.       6000000000  8255255255      美国      DoD网络信息中心
  30.       9000000000  9255255255      美国      纽约IBM公司
  31.       10000000000 10255255255     局域网    对方和您在同一内部网
  32.       11000000000 11255255255     美国      DoD网络信息中心
  33.       12000000000 12000047255     美国      ATT用户
  34.       12000048000 12000063255     哈佛大学  具体不详

  35. ------------------------------------------------------------------
复制代码

大家能看得出什么原因吗,不会是因为存放的IP算法不同吧

但是相同的查询语句连接mytable表时为何会微卡一下呢
回复

使用道具 举报

发表于 2005-2-21 11:02:59 | 显示全部楼层 来自 中国–湖南–永州
Post by yanexp
以上的查询语句我都交换试过了,只是改为mytable表时就微卡,而ipdatau表就没事

以下是两个表的结构图



  1. ipdatau
  2. 字段 类型 Null 默认
  3. StartIP   bigint(20)  否  0  
  4. EndIP   bigint(20)  否  0  
  5. Country   varchar(128) 是   
  6. Prov   varchar(128) 是  NULL  
  7. City   varchar(128) 是  NULL  
  8. Address   varchar(255) 是  NULL  

  9. mytable
  10. 字段 类型 Null 默认
  11. startip   bigint(20) 是  NULL  
  12. endip   bigint(20) 是  NULL  
  13. country   varchar(128) 是  NULL  
  14. area   varchar(128) 是  NULL  

  15.                         [b] ipdatau 表的部分数据[/b]
  16. ===================================================================
  17.       StartIP   EndIP     Country  Prov City Address
  18. ===================================================================
  19.       00663296  150994943 美国     NULL NULL DoD网络信息中心
  20.       150994944 167772159 美国     NULL NULL 纽约IBM公司
  21.       167772160 184549375 局域网   NULL NULL 对方和您在同一内部网
  22.       184549376 201326591 美国     NULL NULL DoD网络信息中心
  23.       201326592 201338879 美国     NULL NULL ATT用户

  24. ------------------------------------------------------------------

  25.                           [b]mytable 表的部分数据[/b]
  26. ==================================================================
  27.       startip     endip           country   area
  28. ==================================================================
  29.       6000000000  8255255255      美国      DoD网络信息中心
  30.       9000000000  9255255255      美国      纽约IBM公司
  31.       10000000000 10255255255     局域网    对方和您在同一内部网
  32.       11000000000 11255255255     美国      DoD网络信息中心
  33.       12000000000 12000047255     美国      ATT用户
  34.       12000048000 12000063255     哈佛大学  具体不详

  35. ------------------------------------------------------------------
复制代码

大家能看得出什么原因吗,不会是因为存放的IP算法不同吧

但是相同的查询语句连接mytable表时为何会微卡一下呢



好久没来了,对于卡的问题,我感觉是数据库的问题,因为你说的ipdatau数据库只有7万多条记录,而通过QQ转出来的数据有20万条,所以当服务器就需要更多的时间来查询,所以感觉上会卡点,你可以自行修改压缩下数据库,把非亚洲的IP全部删除并定义成国外用户(工程量很大啊),这样可能会好些!
回复

使用道具 举报

 楼主| 发表于 2005-2-21 12:18:48 | 显示全部楼层 来自 中国–广东–广州
Post by hnroc
好久没来了,对于卡的问题,我感觉是数据库的问题,因为你说的ipdatau数据库只有7万多条记录,而通过QQ转出来的数据有20万条,所以当服务器就需要更多的时间来查询,所以感觉上会卡点,你可以自行修改压缩下数据库,把非亚洲的IP全部删除并定义成国外用户(工程量很大啊),这样可能会好些!



AMX库下的两个表:

ipdatau.MYD  (189,619)条记录 大小:(10.3 MB)

mytable.MYD (183,572)条记录 大小:(9.70 MB)

这里很明显看得出ipdatau的记录比mytable还要多,为何ipdatau表不卡,而mytable就会微卡一下呢,真是没法解释呀,数据都是在同一台机上的

hnroc你在测试时有看到微卡现象吗?
我用你的代码测试ipdatau表时是很正常的,只是取得地址不对罢了
回复

使用道具 举报

发表于 2005-2-21 15:35:35 | 显示全部楼层 来自 中国–湖南–永州
Post by yanexp
AMX库下的两个表:

ipdatau.MYD  (189,619)条记录 大小:(10.3 MB)

mytable.MYD (183,572)条记录 大小:(9.70 MB)

这里很明显看得出ipdatau的记录比mytable还要多,为何ipdatau表不卡,而mytable就会微卡一下呢,真是没法解释呀,数据都是在同一台机上的

hnroc你在测试时有看到微卡现象吗?
我用你的代码测试ipdatau表时是很正常的,只是取得地址不对罢了


你这个ipdatau.myd和mytable.myd是什么时候的数据?分别从哪里转出来的?我记得以前最开始置顶的那个ipdatau只有7万多条记录,你现在这个是不是更新后的数据?如果是那我就不清楚了,可能是nwb13说的那样,amx与amxx之间的版本问题了,用nwb13更新后的插件试试
还有如果你是自己更新数据库,用到命令
INSERT INTO
<From,To,Country,Area>
VALUES('003000000000',' 003255255255',' 美国',' 新泽西通用电气公司');
此命令为追加记录(不是替换),如果你重复执行上面的命令相当于有2条同样的记录在数据库里,所以在做数据库时,如果你导入了几次数据,而且没有删除原有的数据,那么数据库内会出现重复数据(当然记录也会增加).服务器在查找IP时就会找到多条记录.
至于测试,由于现在换工作了,没有服务器进行测试了,不过从以前测试结果上看,感觉上好象是有点卡,后来我把这个插件做了点修改,主要是用来屏蔽恶意作弊者,发现作弊者,查其IP及城市,如果此城市出现多次作弊者,则屏蔽此城市所有IP(就是通过此数据来判断).
回复

使用道具 举报

 楼主| 发表于 2005-2-21 16:46:55 | 显示全部楼层 来自 中国–广东–广州
Post by hnroc
你这个ipdatau.myd和mytable.myd是什么时候的数据?分别从哪里转出来的?我记得以前最开始置顶的那个ipdatau只有7万多条记录,你现在这个是不是更新后的数据?如果是那我就不清楚了,可能是nwb13说的那样,amx与amxx之间的版本问题了,用nwb13更新后的插件试试
还有如果你是自己更新数据库,用到命令
INSERT INTO
<From,To,Country,Area>
VALUES('003000000000',' 003255255255',' 美国',' 新泽西通用电气公司');
此命令为追加记录(不是替换),如果你重复执行上面的命令相当于有2条同样的记录在数据库里,所以在做数据库时,如果你导入了几次数据,而且没有删除原有的数据,那么数据库内会出现重复数据(当然记录也会增加).服务器在查找IP时就会找到多条记录.
至于测试,由于现在换工作了,没有服务器进行测试了,不过从以前测试结果上看,感觉上好象是有点卡,后来我把这个插件做了点修改,主要是用来屏蔽恶意作弊者,发现作弊者,查其IP及城市,如果此城市出现多次作弊者,则屏蔽此城市所有IP(就是通过此数据来判断).



我前面已经说得很清楚啦,数据库当然不是追加的,我是新建的

ipdatau表我是使用下面的
显示玩家IP及城市插件的2月10日IP库
http://www.dt-club.net/showthread.php?t=18240


mytable表就是使用你提供的
http://www.dt-club.net/showthread.php?t=17495
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表