wp_太大woocommerce_數據庫中的會話 [如何修復]

正如我在其他文章中所說的, WooCommerce 它是一個日益強大和靈活的模塊,能夠轉變 WordPress 在一個 初創企業的理想在線商店.

對於規模的在線商店 modeSTE, WooCommerce 它也可以在“共享主機”上運行,如果使用的主題不消耗太多資源並且您不濫用其他模塊(插件),則能夠輕鬆支持每天 5.000 個產品/100 個訂單。

源代碼優化 WP 主題、模塊(WP 插件)和 數據庫優化 還有兩個方面我們需要非常小心。

前幾天我注意到一家規模很大的網上商店 mode開始 消耗大量的 RAM 資源和 CPU 在專用服務器上 慷慨的。 這種高資源消耗導致服務器上的“負載”增加以及在線商店頁面的長時間加載。

當我們發現 Web 服務器上出現不合理的高負載時,最好在採取任何措施之前仔細調查原因。

在數據庫中,我注意到表“wp_woocommerce_sessions“它超大。 它有超過 6 GB。 數據庫中一個表的巨大容量,通常總共不超過 100 MB。

wp_是什麼woocommerce_會話?

從他的名字我們可以猜到,這張桌子“wp_woocommerce_sessions”包含 PHP 會話 (PHP會話).
這些會話是站點用戶(或網絡機器人)的操作,大多數情況下它們最終通過 cookie 存儲在數據庫中。 在wp_中woocommerce_sessions 存儲用戶在購物車中放置的產品的數據、優惠券、運費、客戶數據以及與產品訂購過程相關的許多其他信息。

無論用戶是否在站點上註冊,都會創建這些會話,並且通常會在一段時間後自動過期並刪除。

不幸的是,這些會話並不總是被刪除,在某些情況下,它們仍然永久存儲在 wp_woocommerce_sessions,這使得這個表達到了相當大的體積。

如何刪除表 wp_woocommerce_sessions 從SQL?

1。 到 我的帳戶 →  WooCommerce →  Status →  工具 (標籤)。

2.向下滾動到選項“清除客戶會話“。 小心! 刪除客戶會話意味著刪除他們放入購物車的所有產品。 如果在刪除這些會話時,購物車中有產品的客戶將消失,並且可能無法完成在線訂單。

3. 單擊“清除”並確認操作。

此時表“wp_woocommerce_sessions”為空,因此所有客戶購物會話均已刪除。

問題還遠沒有解決。 SQL 表 wp_woocommerce_sessions 會再次收集其中的數據,默認情況下會再次獲取比例,這是不可取的。

我們如何阻止客戶端會話永久存儲在 WooCommerce - wp_woocommerce_sessions?

我上面已經展示了表“wp_woocommerce_sessions”,但幾天后客戶端會話再次收集時問題將再次出現。

前 WooCommerce 2.5、通過cookie捕獲客戶端會話,稍後保存在表中 WordPress “wp_options“。
對於較大的商店,這種方法往往會導致災難。 “wp_options“作為重要的餐桌 WordPress, 由常規選項和設置使用。 識別並手動刪除存儲在 wp_options 這不是一件容易的事。
性能 WooCommerce 它們不是最好的,隨著時間的推移,可擴展性是一個敏感點。

隨著發射 WooCommerce 2.5 2015年,開發商 WooCommerce 引入了新的會話處理和存儲系統 WooCommerce,基於 WP 會話管理器. 這個系統導致了出現 wp_woocommerce_sessions. 客戶端會話的專用表,在數據庫中不與其他表交互。 如果出現重大錯誤,損失應該是最小的。

據我觀察,之前推出的網上商店 WooCommerce 2.5 隨著時間的推移不斷更新,在自動刪除客戶端會話方面存在一些問題。 這很可能是較新版本上出現的錯誤 WooCommerce 2.5 或插件 WordPress / WooCommerce 沒有跟上更新。

在我的情況下,它與添加到文件中的函數發生衝突 functions.php 的主題,以及 防止在會話過期後自動刪除 woocommerce_sessions.
如果您遇到此類問題,您必須仔細調查所有可能的原因。 SQL 錯誤、SQL 權限、Cron 作業、與其他插件衝突,最後但並非最不重要的是檢查您在代碼中所做的更改。

我看到了 WooCommerce 只需 29 美元即可提供能夠管理客戶會話的插件。 ”清除購物車和會話 WooCommerce“。 當然,除了預定的會話刪除之外,該模塊還有幾個可以幫助您的工具。

更簡單的選擇 預定刪除“woocommerce_sessions”每隔一天, 可在以下代碼中使用 functions.php:

// clean cart every day
if (!wp_next_scheduled('cron_wc_clean_cart')) {
    wp_schedule_event( time(), 'daily', 'cron_wc_clean_cart' );
}

add_action ( 'cron_wc_clean_cart', 'wc_clean_session_cart' );
function wc_clean_session_cart() {
    global  $wpdb;

    $wpdb->query( "TRUNCATE {$wpdb->prefix}woocommerce_sessions" );
    $wpdb->query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key='_woocommerce_persistent_cart_" . get_current_blog_id() . "';" );
    wp_cache_flush();
}

如果您需要幫助或有其他解決方案,請發表評論。

作為科技愛好者,我從2006年開始在StealthSettings.com上愉快地撰寫文章。我在操作系統方面有豐富的經驗,包括macOS、Windows和Linux,還熟悉編程語言和博客平台(WordPress),以及在線商店平台(WooCommerce、Magento、PrestaShop)。

如何 » 調整與技巧 » wp_太大woocommerce_數據庫中的會話 [如何修復]

1 個關於“太大的 wp_woocommerce_數據庫中的會話[如何修復]”

  1. 我無法刪除重達 500mb 的數據,並且我有每分鐘 1000mb 的限制來刪除所有內容再次完全填滿...... .some 解決方案?

    回复
發表評論