正如我在其他文章中所說的, 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();
}
如果您需要幫助或有其他解決方案,請發表評論。
我無法刪除重達 500mb 的數據,並且我有每分鐘 1000mb 的限制來刪除所有內容再次完全填滿...... .some 解決方案?