1 頁 (共 1 頁)

[問題] 實際存在的文章數與版面上主題的回覆數不符

發表於 : 2005-02-13 10:37
依夢兒
●架設主機作業系統:Linux
●您的上網方式:Seednet ADSL
●您安裝的程式:Apache 1.3.33 + php 4.3.10 + MySql 4.0.22-standard
●您的 phpBB2 版本:phpBB 2.0.11
●您的 網域名稱:http://morningmusumenet.net
●您的 phpBB2 連結網址: http://morningmusumenet.net/phpbb/


在我自己的論壇上觀察到一點。
就是版面上某主題的回覆數,顯示是 21 篇。(加上開題的那一篇,一共就是 22 篇了。)
但是進到資料庫去搜尋 phpbb_posts 指定搜尋條件為 post_topics 來搜尋該主題的 ID ,結果竟然列出有 23 篇相關的 post 。
然後我又仔細對照了一下,發現有一篇 post 的 ID 只有出現在 phpbb_posts 中,但是沒有出現在 phpbb_posts_text 中。
也就是說,有一篇 post 變成幽靈人口,資料只有寫入到 phpbb_posts 而沒有寫入到 phpbb_posts_text 。
所以在瀏覽主題的時候,是找不到那一篇 post 的,但是系統又把那一篇 post 算進該主題的回覆數。
這樣會造成一種現象,就是跳頁的時候會出現誤判的情況。
還有,如果該主題被人回覆滿一整頁,出現第十九篇和第三十九篇回覆的 post 時。
如果去點擊版面上的 圖檔 直接檢視最後發表的文章,結果系統會說沒有那一篇 post 的存在。
相關討論:http://morningmusumenet.net/phpbb/viewtopic.php?t=42169

我猜想可能是伺服器被狂操忙不過來的原故。
網友在發送文章傳輸資料的過程中,伺服器可能掛點沒有回應,於是該篇文章沒有完整寫入到資料庫。
我試過一支叫作 Resync Forum Statistics 的外掛,試圖重新對應論壇所有主題的回覆數,不過沒有什麼用。
所以每一次會員反應發生了類似的問題,我必須手動進資料庫比對哪一篇 post 是幽靈人口,將它砍掉,
並且修正該主題在 phpbb_topics 登記的 topic_replies 也就是回覆數才行,挺麻煩的。
最怕的就是沒有會員回報,因為沒有人發現回報,我根本不知道有哪一些主題出了問題。

不知道有沒有比較好的解決方法?例如從 phpBB 的程式碼下手,或是有另外比較好的 Resync 外掛可以使用?

發表於 : 2005-02-13 11:57
shihchieh
SELECT p.post_id, pt.post_id
FROM (posts_table p LEFT JOIN posts_text_table pt ON pt.post_id = p.post_id)
WHERE pt.post_id = NULL;
找到這些post_id後再check一下是否真的沒有對應的內容
這個實際上沒試過純想像~

發表於 : 2005-02-13 12:45
baboo
以前有遇到這個問題... 因為情況不容易"再造", 花了很多精力在上面,

記得改滿多地方的, 好像十幾個吧...
大部份都是在當讀取資料庫的時候多加一個檢查的步驟,

而所有有關 forum total post, topic total post, 跟被刪除會員 po(還是guest? 忘記了) 的資料庫讀取都要改.

細節忘記了... 這個問題是個不太想記得的東西...

發表於 : 2005-02-13 20:58
依夢兒
感謝 ETERNAL 提供了解決方法,有需要的人可以參考一下。
http://phpbb-tw.net/phpbb/viewtopic.php?p=108369#108369