回精華區
作者BioStar.bbs@micro.bio.ncue.edu.tw (澎湖小雲雀) 看板: plan
標題Re: 請問累積上站時數
時間擎天崗 (Sat, 01 Nov 2003 00:39:02 +0800 (CST)) Updated: 2005/10/29
  改了 ACCT 欄位要 transacct

: struct.h: struct ACCT

  time_t firstlogin;            /* 第一次上站時間 */
  time_t lastlogin;             /* 上一次上站時間 */
  time_t tcheck;                /* 上次 check 信箱/好友名單的時間 */
  time_t tvalid;                /* 通過認證的時間 */
+ time_t staytime;              /* 掛站總時間 */

: bbsd.c:u_exit()

  utmp_free();                  /* 釋放 UTMP shm */

- diff = (time(&cuser.lastlogin) - ap_start) / 60;
+ diff = time(&cuser.lastlogin) - ap_start;
+ cuser.staytime += diff;
+ diff /= 60;
  sprintf(fpath, "Stay: %d (%d)", diff, currpid);
  blog(mode, fpath);

: bbsd.c:tn_main()

  tn_signals(); /* Thor.980806: 放於 tn_login前, 以便 call in不會被踢 */
  tn_login();

  /* BioStar.051029: 累積上站時數應從登入後才計算,而不是從連線建立時候就
     開始計算,避免使用者先用防閒置的 BBS 軟體開啟數十個尚未登入的連線,
     由於尚未登入所以不受同一ID同時上線限制,但是每一個連線的累積上站時數
     就已經開始計算,然後過了幾天後在逐一登入與登出,就有大量累積上站時數 */
+ time(&ap_start);

  board_main();

: acct.c:acct_show()

  usr_fpath(buf, uid, fn_dir);
  prints("  \033[32m個人信件:\033[37m%d 封\n", rec_num(buf, sizeof(HDR)));

+ diff = u->staytime / 60;
+ prints("  \033[32m掛站時數:\033[37m%d 時 %d 分\n", diff / 60 , diff % 60);

--
  Origin:  彰化師大生物系˙吟風‧眺月‧擎天崗  micro.bio.ncue.edu.tw 
  Author: BioStar 163.23.212.18 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻