WooCommerce 成为越来越多的高度使用的模块 在线杂志。 SEO,产品,股票,干净和直观的代码,简单的管理接口以及为Woo开发的数千种犁,只是当您考虑开发在线商店时,它应该有机会的一些参数。
像任何CMS一样,都不是在与其他WordPress插件不同的使用或交互情况下可能发生的几率的例外。
在具有资源的服务器上 硬件 非常慷慨,我注意到 数据库服务 ((mysqld)开始要求将近80– 90%的RAM内存。一个非常严重的问题,因为我根本不明白110个错误来自何处(110:连接时间)。
在更仔细地检查SQL流程时,我发现数据库具有两个相当大的卷表: wp_actionscheduler_actions 和 wp_actionscheduler_logs。
以mod态度 计划的动作 但 WooCommerce Action Scheduler 执行后,应自动删除它。这并不总是发生,并且它们在具有状态的wp_actionschedier_actions中仍然被阻止: 失败的,,,, 取消,,,, 待办的 或者 完全的。
在桌子上方的图像中 “wp_actionsscheduler” 他们只有 略超过15 MB。对不起,我没有受到启发,当1.2 GB。即便如此,15 MB足以容纳包含WooCommerce编程动作的表。
这些表 “充气” 结果是因为 WP-Cron不会删除输入 关心AU状态 “失败的“,,,, “取消” 和 “完全的“。通常,这些输入必须自动从数据库中删除。
我们可以很容易地看到的预定动作及其状况 WooCommerce →地位 →计划的动作。
我们如何清理内部 “失败的“,,,, “取消” 和 “完全的” 从wp_actionscheduler_actions 和 wp_actionscheduler_logs
我们通过phpmyadmin访问数据库,然后在SQL上执行命令行:
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed'
一旦清洁了该表,就不意味着解决问题了。如上所述,主要原因是出于WP-Chron服务的各种原因停用。因此带有状态的条目 “僵尸” 他们再也无法删除了。
重要的是要知道,如果您在WoCommerce上有一家在线商店,并且可以通过插件连接到Facebook商店 “Facebook用于WooCommerce“,它会自动将WooCommerce产品与您的Facebook商店帐户同步。而且大约15分钟。这些SQL输入如果不受控制,您可以获得数十万行 “wc_facebook_regeneres_feed” 在 “wp_actionscheduler_actions“。
对于拥有大量订单的商店来说,此间隔是可以的,因此必须不断更新Facebook商店的股票。如果您仍然认为可以从Facebook中进行这些同步,并且您的商店可以每24小时进行一次,则下面的代码线可以为您提供帮助。
打开您的商店正在运行的WordPress / WooCommerce主题的function.php文件并添加:
add_filter( 'wc_facebook_feed_generation_interval', function(){ return HOUR_IN_SECONDS * 24; } );
接下来,我们可以将一个星期的间隔设置为自动清洁:
add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge' );
function wpb_action_scheduler_purge() {
return WEEK_IN_SECONDS;
}
一旦保存了这些更改,您将不会有巨型表的问题 “wp_actionscheduler_actions”。
@Stealth
感谢您的帮助。你保存我的一天和购物。我的网络商店崩溃后,我首先发现了这一点。许多插件已经开始将其输出转储到该表中,并且填充了… Wooping 9.2GB的桌子使我的主人放弃了他原本很好的PPP时间。现在,我正在修剪精美的代码!
只是关于将绳子掉下来的问题 “wpb_action_scheduler_purge” 是DB中的默认值还是我应该。将其重命名为我的某些东西(默认是我的db而不是'wp_’ )还是功能?
感谢您的帮助和超级不错的文章
问候
Netz