收藏夾和訂閱

收藏夾和訂閱

bbPress 2.6 改變了收藏夾和訂閱在資料庫中的儲存方式。此頁面解釋了原因,以及如果升級沒有自動為您觸發,您可能需要採取哪些步驟。

如果升級在完成之前失敗,那沒關係。您可以隨時安全地重新執行升級,Tools > Forums 而不會破壞或複製資料。

警告

對於使用者少於 10,000 的小型論壇,bbPress 將嘗試自動遷移您的收藏夾和訂閱。如果您的論壇有超過 10,000 名使用者,bbPress 知道它可能需要比可用資源更多的資源,並且會跳過升級。

解釋

bbPress 2.6 之前的所有版本都儲存了收藏夾和訂閱,wp_usermeta 每個站點上的每個使用者都有 1 個值。在具有許多使用者的多站點安裝中,這會導致低效的資料庫查詢和許多從未以全域性方式使用的全域性可用行。

bbPress 2.6 採用將每個個人收藏和訂閱儲存在 wp_postmeta 資料庫表中的方法。這允許進行一些不同的改進

  • 兩種方式都可以更輕鬆地查詢 – 每個使用者和站點的訂閱數,以及每個話題的訂閱數
  • 更少的行 wp_usermeta 導致 WordPress 和 bbPress 中的單方面效能改進
  • 收集使用者電子郵件地址以傳送訂閱現在是一個非常簡單且快速的資料庫查詢

手動升級

如果您是少數幸運的人之一,因為您擁有 10,000 多個使用者,因此需要手動升級您的論壇,那麼您需要檢視 3 個 bbPress 功能 bbpress/includes/admin/tools.php:

  • bbp_admin_upgrade_user_forum_subscriptions()
  • bbp_admin_upgrade_user_topic_subscriptions()
  • bbp_admin_upgrade_user_favorites()

這 3 個函式執行以下操作:

  • 查詢 wp_usermeta 透過 meta_key 為所有使用者誰已經收藏或訂閱
  • 迴圈遍歷每一行,並將其拆分為帖子 ID
  • 迴圈遍歷每個帖子 ID,並將使用者 ID 新增到它的後設資料中,並使用適當的 meta_key
  • 如果新增的項數與原來匹配,usermeta 則刪除 2.6 之前的

您可能想要執行以下操作:

  • 增加可用於 PHP 和 Web 伺服器軟體(Apache 、 Nginx 等)的記憶體量
  • 增加執行這些指令碼的伺服器的實體記憶體
  • 增加超時長度以允許這些指令碼按原樣執行幾分鐘
  • 修改原始查詢以限制使用者 ID 結果迴圈。(通常一次 1000 個使用者是一個不錯的數字。)
  • 註釋掉 對測試的呼叫 add_post_meta() 和 delete_metadata_by_mid() 試執行

對於新增的上下文,這些是 bbPress 團隊用來升級 BuddyPress.org 、 bbPress.org 、 WordCamp.org 和 WordPress.org 的相同指令碼和技術。它們工作正常,而且工作得很好,但我們理解移動資料是可怕的,並希望您對幕後發生的事情做好準備並感到舒適。

報告拼寫錯誤

以下文字將傳送給我們的編輯: