yanexp 发表于 2005-2-20 09:29:35

出错有什么提示呀,我这是用0.97的,编译很正常呀~

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

hai1989 发表于 2005-2-20 09:48:19

不好意思 是我弄错了 ,谢谢你的共享精神,我用的是AMX0.99   发现不能使用 ,只要一进人服务器就会挂掉

yanexp 发表于 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:

yanexp 发表于 2005-2-20 10:50:56

本想使用mytable表的,因为它比较直观,修改自定义地址比较方便,

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

nwb13 发表于 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 DESCLIMIT 0 , 1", table, ipaddr)

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

yanexp 发表于 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 DESCLIMIT 0 , 1", table, ipaddr)

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

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

以下是两个表的结构图



ipdatau
字段 类型 Null 默认
StartIP   bigint(20)否0
EndIP   bigint(20)否0
Country   varchar(128) 是   
Prov   varchar(128) 是NULL
City   varchar(128) 是NULL
Address   varchar(255) 是NULL

mytable
字段 类型 Null 默认
startip   bigint(20) 是NULL
endip   bigint(20) 是NULL
country   varchar(128) 是NULL
area   varchar(128) 是NULL

                         ipdatau 表的部分数据
===================================================================
      StartIP   EndIP   CountryProv City Address
===================================================================
      00663296150994943 美国   NULL NULL DoD网络信息中心
      150994944 167772159 美国   NULL NULL 纽约IBM公司
      167772160 184549375 局域网   NULL NULL 对方和您在同一内部网
      184549376 201326591 美国   NULL NULL DoD网络信息中心
      201326592 201338879 美国   NULL NULL ATT用户

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

                        mytable 表的部分数据
==================================================================
      startip   endip         country   area
==================================================================
      60000000008255255255      美国      DoD网络信息中心
      90000000009255255255      美国      纽约IBM公司
      10000000000 10255255255   局域网    对方和您在同一内部网
      11000000000 11255255255   美国      DoD网络信息中心
      12000000000 12000047255   美国      ATT用户
      12000048000 12000063255   哈佛大学具体不详

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

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

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

hnroc 发表于 2005-2-21 11:02:59

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

以下是两个表的结构图



ipdatau
字段 类型 Null 默认
StartIP   bigint(20)否0
EndIP   bigint(20)否0
Country   varchar(128) 是   
Prov   varchar(128) 是NULL
City   varchar(128) 是NULL
Address   varchar(255) 是NULL

mytable
字段 类型 Null 默认
startip   bigint(20) 是NULL
endip   bigint(20) 是NULL
country   varchar(128) 是NULL
area   varchar(128) 是NULL

                         ipdatau 表的部分数据
===================================================================
      StartIP   EndIP   CountryProv City Address
===================================================================
      00663296150994943 美国   NULL NULL DoD网络信息中心
      150994944 167772159 美国   NULL NULL 纽约IBM公司
      167772160 184549375 局域网   NULL NULL 对方和您在同一内部网
      184549376 201326591 美国   NULL NULL DoD网络信息中心
      201326592 201338879 美国   NULL NULL ATT用户

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

                        mytable 表的部分数据
==================================================================
      startip   endip         country   area
==================================================================
      60000000008255255255      美国      DoD网络信息中心
      90000000009255255255      美国      纽约IBM公司
      10000000000 10255255255   局域网    对方和您在同一内部网
      11000000000 11255255255   美国      DoD网络信息中心
      12000000000 12000047255   美国      ATT用户
      12000048000 12000063255   哈佛大学具体不详

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

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

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


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

yanexp 发表于 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表时是很正常的,只是取得地址不对罢了

hnroc 发表于 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(就是通过此数据来判断).

yanexp 发表于 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
页: 1 [2] 3
查看完整版本: 【讨论】奇怪了,关于nwb13与hnroc 两者的显IP地址插件问题!