[建議] 關於水桶上限改進法

看板GossipPicket作者 (天使)時間15年前 (2009/03/20 14:07), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
以下方針,希望看得懂程式的板友看看後,給予技術上的建議 或是其餘板友亦可給功能上的建議 弄好後我就會對站方提出程式修改建議了 感謝大家提供建議 ==================== 簡單來說水桶上限是定義在這張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

03/29 02:16, , 1F
同樣的作法也可以用在黑特板上
03/29 02:16, 1F
文章代碼(AID): #19mpArDl (GossipPicket)