- 主题:请问关于最大登录用户数的问题
最近在web登录的时候,在晚上人多的时候就会出现
系统在线人数已达上限,请稍后再访问本站
这种提示
而这时候上站的注册用户是2400,昨天也是这种情况
但是代码中没搜索到有2400这样的定义限制
搜索了以前的帖子,发现site.h中定义的MAXACTIVE是在线人数限制,但不知道是否包括
guest,而且这个我们设置的是8000,最高在线到过1w以上也没出现过这种情况
看了下登录的代码,流程是这样的:
logon.php中的doLogon函数调用bbs_wwwlogin,判断返回值为 1 的时候提示人数达到上限
bbs_wwwlogin是定义在bbs2www/phplib/phpbbs.session.c中的函数,它调用
www_user_login这个函数,并返回www_user_login的返回值,那也就是后者返回1的时候,
bbs_wwwlogin也返回1,才会出现人数达到上限的情况
www_user_login定义在bbs2www/lib/bbslib.c中,其中有这样一段代码
utmpent = getnewutmpent2(&ui,1);
if (utmpent == -1)
ret = 1;
也就是因为getnewutmpent2返回值是-1,所以造成人数达上限
继续跟踪getnewutmpent2这个函数,是定义在libBBS/utmp.c中的,而它一开头就是
int pos, i, ret;
......
pos = utmphead->hashhead[0] - 1;
if (pos == -1) {
ret = -1;
} else {
......
到这就没有思路了,没发现是什么预定义的常量限制了在线注册用户的数量,正常理解
应该是在什么地方定义了的
请问应该修改哪里来增加这个限制呢?
--
修改:Gery FROM 118.229.184.*
FROM 118.229.184.*
你们有 term 登录用户么,多么
【 在 Gery (Gery) 的大作中提到: 】
: 最近在web登录的时候,在晚上人多的时候就会出现
: 系统在线人数已达上限,请稍后再访问本站
: 这种提示
: ...................
--
FROM 64.9.235.*
有term用户,但是不是很多,10%左右
这个时候term用户也登录不上,显示登录画面后,输入用户名密码,
然后就卡住20秒,没有任何提示,然后断线
我看代码里有两处Net_Sleep(20)然后exit(-1),但这两处睡眠之前都
会显示提示的,我们现在什么提示也没有
【 在 atppp (Big Mouse) 的大作中提到: 】
: 你们有 term 登录用户么,多么
--
FROM 123.127.134.*
没有提示是因为没有refresh吧
你在显示后面加个refresh()试试
【 在 Gery (Gery) 的大作中提到: 】
: 有term用户,但是不是很多,10%左右
: 这个时候term用户也登录不上,显示登录画面后,输入用户名密码,
: 然后就卡住20秒,没有任何提示,然后断线
: ...................
--
FROM 210.77.16.*
src/newmain_single.c u_enter函数中
getSession()->utmpent = getnewutmpent(&uinfo, 0);
if (getSession()->utmpent == -1) {
prints("人数已满,无法分配用户条目!\n");
oflush();
Net_Sleep(20);
exit(-1);
}
src/newmain_single.c中 login_query函数中
curr_login_num = get_utmp_number();
if (curr_login_num >= MAXACTIVE) {
ansimore("etc/loginfull", false);
oflush();
Net_Sleep(20);
exit(1);
}
这两处都flush了吧
按照追踪www登录的情况,term下应该是在第一个net_sleep的地方睡眠退出的
【 在 jiangjun2000 (%d) 的大作中提到: 】
: 没有提示是因为没有refresh吧
: 你在显示后面加个refresh()试试
--
修改:Gery FROM 123.127.134.*
FROM 123.127.134.*
代码改多了哇?
要不升级看看?
【 在 Gery (Gery) 的大作中提到: 】
: src/newmain_single.c u_enter函数中
: getSession()->utmpent = getnewutmpent(&uinfo, 0);
: if (getSession()->utmpent == -1) {
: ...................
--
FROM 218.26.243.*
貌似咱们很久没升级了
【 在 Gery (Gery) 的大作中提到: 】
: src/newmain_single.c u_enter函数中
: getSession()->utmpent = getnewutmpent(&uinfo, 0);
: if (getSession()->utmpent == -1) {
: ...................
--
FROM 123.127.134.*
代码是07年7月的,改了一些,也不算少,不过底层基础的东西都没改
升级……合并起来很麻烦……
【 在 sxdxsimple (雾里龙虾) 的大作中提到: 】
: 代码改多了哇?
: 要不升级看看?
--
FROM 123.127.134.*
哦。这个问题好诡异呀好诡异啊好诡异啊好诡异啊
【 在 Gery (Gery) 的大作中提到: 】
: 代码是07年7月的,改了一些,也不算少,不过底层基础的东西都没改
: 升级……合并起来很麻烦……
--
FROM 123.127.134.*
这个?
src/newmain_single.c :529
if (!HAS_PERM(getCurrentUser(), PERM_SYSOP) && (curr_login_num >= MAXACTIVE + 10)) {
ansimore("etc/loginfull", false);
oflush();
sleep(1);
exit(1);
}
【 在 Gery (Gery) 的大作中提到: 】
: src/newmain_single.c u_enter函数中
: getSession()->utmpent = getnewutmpent(&uinfo, 0);
: if (getSession()->utmpent == -1) {
: ...................
--
修改:hyu35 FROM 123.127.134.*
FROM 123.127.134.*