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 的相同腳本和技術。它們工作正常,而且工作得很好,但我們理解移動數據是可怕的,並希望您對幕後發生的事情做好準備並感到舒適。
報告拼寫錯誤
以下文本將發送給我們的編輯: