Re: [問題] ptt的bug。

作者: IepID (Iep Iweidieng)   2021-07-05 02:35:59
※ 引述《holishing ( )》之銘言:
: 推 holishing: 如果過一陣子才正常,那就是已知問題 07/04 14:11
※ 引述《roujuu (老中)》之銘言:
: 是因為 ptt 這個bbs的程式寫法的關係嗎?
: 「過一陣子才正常」是因為程式的寫法並不是隨時都去運算以更新相關方面的搜尋結果?
根據 PttBBS 的原始碼,的確是這樣的。
請見: https://github.com/ptt/pttbbs/blob/7b35778243/common/bbs/search.c
以下對處理邏輯的說明,主要是根據此程式碼所得出的。
common/bbs/search.c 包含以下兩個處理文章搜尋的函式:
select_read_should_build() 與 select_read_build()。
select_read_build() 會更新或重新建立搜尋結果,並建檔儲存。
而儲存的檔案,以下稱之為「搜尋結果檔」。
注意不同的搜尋條件會對應不同的搜尋結果檔。
請見 mbbsd/read.c 中的函式 select_read():
https://github.com/ptt/pttbbs/blob/7b35778243/mbbsd/read.c#L651...L720
select_read_should_build() 會決定是否需要更新或重新建立搜尋結果。
首先,如果搜尋結果檔尚未建立,就需要重新建立搜尋結果。
接著,這個函式會檢查看板的 SRexpire。
(SRexpire 應該是最近一次對此看板進行需要重新建立搜尋結果的操作的時間)
如果搜尋結果檔比 SRexpire 還早建立的話,就需要重新建立搜尋結果。
檢查完 SRexpire 後,會再檢查搜尋結果檔的更新時間(未更新過則為建立時間)。
如果搜尋結果超過 1 小時未更新,就會重新建立搜尋結果。
如果距上次更新未超過 1 小時,但超過 3 分鐘未更新,
就會以目前的搜尋結果檔為基礎,更新搜尋結果。
如果距上次更新未超過 3 分鐘,則會直接使用目前的搜尋結果檔當作搜尋結果。
此外,當搜尋條件包含 m/s 標記或推文數時,
只要搜尋紀錄的更新時間距上次更新超過 3 分鐘,就會一律重新建立搜尋結果。
請見: https://github.com/ptt/pttbbs/blob/7b35778243/mbbsd/read.c#L700...L701
因此,若是遇到此類問題,目前暫時的因應方式是先等待 3 分鐘後再重新搜尋。
若仍然遇到問題,則可嘗試增加 m/s 標記或推文數的搜尋條件。
而從系統端解決的方式之一,則是找出會導致搜尋結果與文章列表不合的文章操作,
並使看板的 SRexpire 在這些操作後被更新,讓下次搜尋能使用重新建立的搜尋結果。
※ 引述《roujuu (老中)》之銘言:
: 【板主:u10400068/zouelephant/redDest..】[希洽] Steam夏季特賣登場 看板《C_Chat》
: [←]離開 [→]閱讀 [Ctrl-P]發表文章 [d]刪除 [z]精華區 [i]看板資訊/設定 [h]說明
: 編號 日 期 作 者 文 章 標 題 人氣:818
: 346277 +43 6/27 dzwei □ [閒聊] やなぎなぎ最經典的歌曲是哪首?
: 346278 + 6/27 dalyadam □ [實況] Forsen 玩(Bro Falls)惡搞?抄襲?
(恕省略以下內容……)
至於問題報告的內容,個人覺得以畫面擷圖為主來敘述的話,
讀者會需要看圖說故事,且文章篇幅會較大,因此閱讀上可能會比較不容易理解,
而引用上可能也會有不甚方便之處。
如果能確定畫面中有助於判斷問題的部份的話,僅保留該部份有助於減少文章篇幅。
但若不清楚畫面中須要保留的部份,而不便取捨的話,
如果每張擷圖都有文字說明此擷圖所對應的操作步驟,讀者會更容易理解。
而如果能從問題報告的標題看出此問題的大致的類型,甚至大致的症狀的話,
也可以幫助站方與協助維護程式的人員判斷此問題的重要程度。

Links booklink

Contact Us: admin [ a t ] ucptt.com