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