正如我在其他文章中所说,WooCommerce 是一个越来越强大和灵活的模块,能够转换 WordPress 在一个 初创企业的理想在线商店.
对于一个普通的在线商店,WooCommerce 可以运行在“共享主机”上,如果使用的主题不消耗太多资源并且不滥用其他模块(插件),则可以轻松支持每天 5.000 个产品/100 个订单。
源代码优化 WP 主题、模块(WP 插件)和 数据库优化 还有两个方面我们需要非常小心。
前几天我注意到一家不起眼的网上商店正在开张 消耗大量的 RAM 资源和 CPU 在专用服务器上 慷慨的。 这种高资源消耗导致服务器上的“负载”增加以及在线商店页面的长时间加载。
当我们发现 Web 服务器上出现不合理的高负载时,最好在采取任何措施之前仔细调查原因。
在数据库中,我注意到表“wp_woocommerce_sessions
“它超大。 它有超过 6 GB。 数据库中一个表的巨大容量,通常总共不超过 100 MB。

什么是 wp_woocommerce_sessions?
从他的名字我们可以猜到,这张桌子“wp_woocommerce_sessions
”包含 PHP 会话 (PHP会话).
这些会话是站点用户(或网络机器人)的操作,大多数情况下他们通过 cookie 访问数据库。 在 wp_woocommerce_sessions 中存储了有关用户放入购物车的产品的数据、优惠券、运费、客户数据以及与产品订购过程相关的许多其他信息。
无论用户是否在站点上注册,都会创建这些会话,并且通常会在一段时间后自动过期并删除。
不幸的是,这些会话并不总是被删除,并且在某些情况下它们会永久存储在 wp_woocommerce_sessions 中,这使得该表非常大。
如何删除表 wp_woocommerce_sessions
从SQL?
1。 到 用户面板 → WooCommerce → 订单状态 → 鑫安工具 (标签)。
2.向下滚动到选项“清除客户会话“。 小心! 删除客户会话意味着删除他们放入购物车的所有产品。 如果在删除这些会话时,购物车中有产品的客户将消失,并且可能无法完成在线订单。
3. 单击“清除”并确认操作。

此时“wp_woocommerce_sessions”表为空,因此所有客户购物会话都已删除。
问题远未解决。 wp_woocommerce_sessions SQL 表将再次收集其中的数据,默认情况下它会再次获得比例,这是不可取的。
我们如何阻止客户会话永久存储在 WooCommerce 中 - wp_woocommerce_sessions
?
我们在上面展示了如何从数据库中清空“wp_woocommerce_sessions”表,但是在客户会话再次聚集的几天后问题将再次出现。
在 WooCommerce 2.5 之前,客户会话是通过 cookie 捕获的,然后保存到表中。 WordPress “wp_options
“。
对于较大的商店,这种方法往往会导致灾难。 “wp_options“作为重要的餐桌 WordPress, 由常规选项和设置使用。 识别并手动删除存储在 wp_options
这不是一件容易的事。
WooCommerce 的性能并不是最好的,随着时间的推移可扩展性是一个敏感点。
随着 2.5 年 WooCommerce 2015 的推出,WooCommerce 开发人员引入了一个新的 WooCommerce 会话处理和存储系统,基于 WP 会话管理器. 这个系统导致了出现 wp_woocommerce_sessions
. 客户端会话的专用表,在数据库中不与其他表交互。 如果出现重大错误,损失应该是最小的。
据我所知,在 WooCommerce 2.5 之前推出的在线商店随着时间的推移不断更新,在自动删除客户端会话方面存在一些问题。 很可能是出现在较新版本的 WooCommerce 2.5 或插件上的错误 WordPress / WooCommerce 没有跟上更新。
在我的情况下,它与添加到文件中的函数发生冲突 functions.php
的主题,以及 防止在会话过期后自动删除 woocommerce_sessions
.
如果您遇到这样的问题,您需要仔细调查所有可能的原因。 SQL 错误、SQL 权限、Cron 作业、与其他插件冲突,最后但并非最不重要的是检查您在代码中所做的更改。
我看到 WooCommerce 提供的插件只需 29 美元 admin强调客户会议。 “清除 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 解决方案?