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 解决方案?

    回复
发表评论