作者DreamYeh (天使)
看板GossipPicket
标题[建议] 关於水桶上限改进法
时间Fri Mar 20 14:07:47 2009
以下方针,希望看得懂程式的板友看看後,给予技术上的建议
或是其余板友亦可给功能上的建议
弄好後我就会对站方提出程式修改建议了
感谢大家提供建议
====================
简单来说水桶上限是定义在这张Table中
friend.c
static const unsigned int friend_max[8] = {
MAX_FRIEND, /* FRIEND_OVERRIDE */
MAX_REJECT, /* FRIEND_REJECT */
MAX_LOGIN_INFO, /* FRIEND_ALOHA */
MAX_POST_INFO, /* FRIEND_POST */
MAX_NAMELIST, /* FRIEND_SPECIAL */
MAX_FRIEND, /* FRIEND_CANVOTE */
MAX_FRIEND, /* BOARD_WATER */
MAX_FRIEND, /* BOARD_VISABLE */
};
当要存取时候,定义在
friend.c
friend_append()
{
...
while (fgets(buf, sizeof(buf), fp) && (unsigned)count <= friend_max[type])
{
...
}
...
}
这中间都无法特别针对八卦板的Case去做存取,当要判断使用者是否水桶
是利用这段:
cache.c:
const char *postperm_msg(const char *bname)
{
.
.
.
if (file_exist_record(buf, cuser.userid))
return "使用者水桶中";
.
.
.
}
发文限制判断是在board.c
int b_config(void)
{
.
.
if (!cachePostPerm)
{
const char *msg = postperm_msg(bp->brdname);
if (msg) // some reasons
{
...
}
}
.
.
}
要提高八卦板水桶上限,加高MAX_FRIEND显然不可行
因为实在太多变数是使用MAX_FRIEND 包刮使用者的好友名单上限
因此这里可能可以用的改善方法:
1.直接修改 static const unsigned int friend_max {}
这张Table,
将这个栏位:
MAX_FRIEND, /* BOARD_WATER */
改成其他数值
这样全站所有板的水桶名单上限都会提高
这样储存水桶名单那个file容量
不会大幅提升
敝人是认为可行
为什麽呢?因为他存名单是采用
friend_add(const char *uident, int type, const char* des)
{
if (friend_count(fpath) > friend_max[type])
return;
}
简单来说是存名单前,检查一下档案的lines数量
因此不会特别造成容量大为增加
2.针对八卦板Case,去做改变
我们可以写入在board.c
int b_config(void)
{
}
加一段:
if(strcmp(bp->brdname,"Gossiping")==0)
{
}
不过这样一来可能就要新写一段
const char *GOSSIP_postperm_msg(const char *bname)
{
...
}
然後去读不同的档案
另外个先解救方法是,读取看板好友名单,因为那边也会占256个栏位
然後同样设定为水桶。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.66.37.44
1F:推 WeAntiTVBS:同样的作法也可以用在黑特板上 03/29 02:16