收藏夾和訂閱

收藏夾和訂閱

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 的相同腳本和技術。它們工作正常,而且工作得很好,但我們理解移動數據是可怕的,並希望您對幕後發生的事情做好準備並感到舒適。

上次修改 2021.12.26

報告拼寫錯誤

以下文本將發送給我們的編輯: