[問題] 論壇升級2.0.18後,Last Visit Mod的統計數字不正常

phpBB 2 MOD Support
無論是官方或非官方認證之外掛,安裝與使用問題討論。
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

主題已鎖定
澀男人
星球公民
星球公民
文章: 32
註冊時間: 2004-01-18 20:44
來自: Taiwan
聯繫:

[問題] 論壇升級2.0.18後,Last Visit Mod的統計數字不正常

文章 澀男人 »

問題外掛: Last visit 1.2.8
參考連結: http://phpbb-tw.net/phpbb/viewtopic.php?t=35973
使用版本: phpBB 2.0.18
網站位置: http://forum.doecosway.com
狀況描述:

求助!不知道有沒有前輩高手發現此一問題?
由2.0.17升級為2.0.18後,Last Visit Mod的今日訪客統計數字出現不正常現象~「會時高時低」,例如目前的今日訪客量是80人,幾分鐘後居然減為78人,但可能過一段時間後又增為82人。
此一問題在英文官方網頁上亦有人提出來,但到目前為止仍無回應。不知道是哪裡出錯?
http://www.phpbb.com/phpBB/viewtopic.php?t=337046
eCosway為您的人生增添光彩
歡迎參觀我的網站:http://www.doecosway.com/tw063252
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8547
註冊時間: 2004-04-30 01:54
來自: Taiwan

Re: [問題] 論壇升級2.0.18後,Last Visit Mod的統計數字不正常

文章 心靈捕手 »

澀男人 寫:問題外掛: Last visit 1.2.8
參考連結: http://phpbb-tw.net/phpbb/viewtopic.php?t=35973
使用版本: phpBB 2.0.18
網站位置: http://forum.doecosway.com
狀況描述:

求助!不知道有沒有前輩高手發現此一問題?
由2.0.17升級為2.0.18後,Last Visit Mod的今日訪客統計數字出現不正常現象~「會時高時低」,例如目前的今日訪客量是80人,幾分鐘後居然減為78人,但可能過一段時間後又增為82人。
此一問題在英文官方網頁上亦有人提出來,但到目前為止仍無回應。不知道是哪裡出錯?
http://www.phpbb.com/phpBB/viewtopic.php?t=337046
經您這麼一說, 果真發現是有這個問題,
主要是訪客數量並不會累計.

以下的修改, 提供您參考:
#
#-----[ OPEN ]-----
#
includes/sessions.php

#
#-----[ FIND ]-----
#

代碼: 選擇全部

	$sql = 'DELETE FROM ' . SESSIONS_TABLE . ' 
		WHERE session_time < ' . (time() - (int) $board_config['session_length']) . " 
			AND session_id <> '$session_id'";
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

	$sql = "DELETE FROM " . SESSIONS_TABLE . " 
		WHERE UNIX_TIMESTAMP() - session_time >=172800 
			AND session_id <> '$session_id'";
Source: http://mods.db9.dk/viewtopic.php?p=25462#25462
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
澀男人
星球公民
星球公民
文章: 32
註冊時間: 2004-01-18 20:44
來自: Taiwan
聯繫:

文章 澀男人 »

心靈捕手前輩,謝謝您了!

更改之後,雖然看起來似乎正常了,不過總覺得訪客數量的累計還是怪怪的,哪裡怪,我一時也說不上來,好像累計總量及速度比之前2.0.17版的時候還少還慢。例如論壇在版本升級以前,每日訪客數量至少都有120人以上,而且幾乎在晚上6點以前人數累計就會破百,但版本升級後,這一、二天觀察,晚上6點的時候人數累計都不到百人,昨天的總訪客也不過110人左右。不過我並沒有很科學很客觀的紀錄,也許是我的錯覺,這兩天論壇人氣真的比較低吧!

除了以上改法之外,我在上述Mod原作者的網站也看到有人提出另一種改法(主要是中間那一行WHERE UNIX_TIMESTAMP...的寫法不一樣,詳細我記不得了)。

另外一提,原作者的網站從昨天晚上到現在都無法進入,出現下列的錯誤訊息,似乎與Last Vist Mod也有關係:

代碼: 選擇全部

phpBB : Critical Error 

Could not obtain lastvisit data from user table

DEBUG MODE

SQL Error : 1016 Can't open file: 'users.MYI' (errno: 145)

SELECT * FROM users WHERE user_id = -1

Line : 68
File : sessions.php 
eCosway為您的人生增添光彩
歡迎參觀我的網站:http://www.doecosway.com/tw063252
澀男人
星球公民
星球公民
文章: 32
註冊時間: 2004-01-18 20:44
來自: Taiwan
聯繫:

文章 澀男人 »

原作者的網站現在恢復正常了!

除了以上心靈捕手前輩所引述的session.php當中該段的改法之外,在原作者網站上還有人提出另外二種改法如下(第一種改法我也曾經套用在論壇上,看起來似乎也正常),不知這些改法有何差別,請前輩們參考指教!

資料來源: http://mods.db9.dk/viewtopic.php?p=25492#25492

代碼: 選擇全部

Find:

$sql = 'DELETE FROM ' . SESSIONS_TABLE . ' 
WHERE session_time < ' . (time() - (int) $board_config['session_length']) . " 
AND session_id <> '$session_id'";  

Replace with:

$sql = "DELETE FROM " . SESSIONS_TABLE . " 
WHERE session_time < '" . (time() - 86400) . "' 
AND session_id <> '$session_id'"; 
──────

資料來源: http://mods.db9.dk/viewtopic.php?p=25576#25576

代碼: 選擇全部

# 
#-----[ FIND ]------------------------------------------------ 
# 
} 

// 
// Delete expired sessions 
// 

# 
#-----[ FIND ]------------------------------------------------ 
# 
$sql = 'DELETE FROM ' . SESSIONS_TABLE . ' 
   WHERE session_time < ' . (time() - (int) $board_config['session_length']) . " 
       AND session_id <> '$session_id'"; 

# 
#-----[ REPLACE WITH ]-------------------------------- 
# 
$sql = 'DELETE FROM ' . SESSIONS_TABLE . ' 
   WHERE session_time < ' . (time() - (86400 * (int) $board_config['session_length']))) . " 
       AND session_id <> '$session_id'";
eCosway為您的人生增添光彩
歡迎參觀我的網站:http://www.doecosway.com/tw063252
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8547
註冊時間: 2004-04-30 01:54
來自: Taiwan

文章 心靈捕手 »

To 澀男人:

關於我推薦的修改語法, 其實只是將原來安裝外掛 Last visit 1.2.8 關於 includes/session.php 必須修改的部份做移轉而已.
http://phpbb-tw.net/phpbb/viewtopic.php?p=216317#216317

否則, 升級 2.0.18 後, 對於刪除 session_time 的判定有異, 也就影響到訪客數量的累計.

而您所新增的第一種語法, 我猜想也是可行的;
因為它也是將升級 2.0.18 後, 對於刪除 session_time 的判定更改為超過一天以上者( 1 天 = 86400 秒)

至於, 您提到的第二種語法, 我則表示存疑;
若是以一個全新 2.0.18 而言在 includes/sessions.php 裡頭\r
是找不到下列程式碼的

代碼: 選擇全部

} 

// 
// Delete expired sessions 
//
如果他所要找的是\r

代碼: 選擇全部

function session_clean($session_id)
{
	global $board_config, $db;

	//
	// Delete expired sessions
	//
	$sql = 'DELETE FROM ' . SESSIONS_TABLE . ' 
		WHERE session_time < ' . (time() - (int) $board_config['session_length']) . " 
			AND session_id <> '$session_id'";
那麼我以為, 以他所改的語法所得的結果, 恐怕是永遠不用刪除 session_time.
因為\r

代碼: 選擇全部

\n(time() - (86400 * (int) $board_config['session_length'])))
所得的值恐怕會是" 負數".

--
因為要更新的地方實在是太多, 所以衷心期待, 外掛 Last visit 1.2.8
作者 Niels 能盡快推出升級版本. ;-)
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
主題已鎖定

回到「外掛問題討論」