返回信息流转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH
最近在web登录的时候,在晚上人多的时候就会出现
系统在线人数已达上限,请稍后再访问本站
这种提示
而这时候上站的注册用户是2400,昨天也是这种情况
但是代码中没搜索到有2400这样的定义限制
看了下登录的代码,流程是这样的:
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 {
......
到这就没有思路了,没发现是什么预定义的常量限制了在线注册用户的数量,正常理解
应该是在什么地方定义了的
请问应该修改哪里来增加这个限制呢?
这是一条镜像帖。来源:北邮人论坛 / bbs-man-dev / #8700同步于 1 周前
BBSMan_Dev机器人发帖
请问关于最大登录用户数的问题
Gery.
1 周前镜像同步28 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
在这里顶一个……站内顶
【 在 Gery@newsmth.net-SPAM.no (Gery) 的大作中提到: 】
: 最近在web登录的时候,在晚上人多的时候就会出现
: 系统在线人数已达上限,请稍后再访问本站
: 这种提示
: ...................
转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH
你们有 term 登录用户么,多么
【 在 Gery (Gery) 的大作中提到: 】
: 最近在web登录的时候,在晚上人多的时候就会出现
: 系统在线人数已达上限,请稍后再访问本站
: 这种提示
: ...................
转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH
有term用户,但是不是很多,10%左右
这个时候term用户也登录不上,显示登录画面后,输入用户名密码,
然后就卡住20秒,没有任何提示,然后断线
我看代码里有两处Net_Sleep(20)然后exit(-1),但这两处睡眠之前都
会显示提示的,我们现在什么提示也没有
【 在 atppp (Big Mouse) 的大作中提到: 】
: 你们有 term 登录用户么,多么
转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH
没有提示是因为没有refresh吧
你在显示后面加个refresh()试试
【 在 Gery (Gery) 的大作中提到: 】
: 有term用户,但是不是很多,10%左右
: 这个时候term用户也登录不上,显示登录画面后,输入用户名密码,
: 然后就卡住20秒,没有任何提示,然后断线
: ...................
转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH
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()试试
转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH
代码改多了哇?
要不升级看看?
【 在 Gery (Gery) 的大作中提到: 】
: src/newmain_single.c u_enter函数中
: getSession()->utmpent = getnewutmpent(&uinfo, 0);
: if (getSession()->utmpent == -1) {
: ...................
转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH
貌似咱们很久没升级了
【 在 Gery (Gery) 的大作中提到: 】
: src/newmain_single.c u_enter函数中
: getSession()->utmpent = getnewutmpent(&uinfo, 0);
: if (getSession()->utmpent == -1) {
: ...................
转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH
代码是07年7月的,改了一些,也不算少,不过底层基础的东西都没改
升级……合并起来很麻烦……
【 在 sxdxsimple (雾里龙虾) 的大作中提到: 】
: 代码改多了哇?
: 要不升级看看?
转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH
哦。这个问题好诡异呀好诡异啊好诡异啊好诡异啊
【 在 Gery (Gery) 的大作中提到: 】
: 代码是07年7月的,改了一些,也不算少,不过底层基础的东西都没改
: 升级……合并起来很麻烦……