FIX HUGE SQL表:wp_actionscheduler_actions和wp_actionscheduler_logs [WooCommerce提示]

WooCommerce 它已成为广泛使用的模块 网上商店. 搜索引擎优化,产品,库存管理,简洁直观的代码,简单的管理界面以及为Woo开发的成千上万的插件,只是其中的一些论据,当您考虑开发在线商店时就值得一试。

像任何CMS一样,Woo也不例外,在不同的使用情况下或与其他WordPress插件交互时,可能会发生奇怪的情况。
在资源服务器上 硬件 相当慷慨,我注意到 数据库服务 (mysqld的)开始需要近80-90%的RAM。 这是一个非常严重的问题,因为我只是不了解错误110的周期性来源(110:连接超时).
在仔细检查SQL流程时,我发现一个数据库有两个表,它们的容量非常大: wp_actionscheduler_actions si wp_actionscheduler_logs.

一般情况下 预定动作WooCommerce行动计划 它们在执行后应自动删除。 这种情况并非总是会发生,并且它们被卡在wp_actionsscheduler_actions中,状态为: 失败, 取消, 有待完成.

在上图中,表格“wp_actionsscheduler“他们只有 刚刚超过15 MB。 抱歉,当他们拍摄时,我没有受到启发去拍摄屏幕截图 GB 1.2。 即使这样,对于包含WooCommerce计划的操作的表来说,15 MB也足够。
这些“肿胀”的表是由于 WP-Cron不会删除条目 身份为“失败“,”取消“和”完成”。 通常,这些条目应自动从数据库中删除。
计划的动作及其状态可以很容易地看到 WooCommerce →  状态 →  预定行动.

如何清洁排水沟“失败“,”取消“和”完成“以 wp_actionscheduler_actions si 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-Cron服务。 因此,具有“僵尸”状态的条目将不再被删除。
非常重要的是要知道,如果您在WooCommerce上拥有在线商店,并且该商店通过插件“Facebook for WooCommerce”,它将自动将WooCommerce产品与您的Facebook Shops帐户同步。 他在大约15分钟内完成了操作。 如果这些SQL条目不受控制,则可以得到数十万行。wc_facebook_regenerate_feed“在”wp_actionscheduler_actions“。

对于有大量订单的商店,此间隔是可以的,并且需要不断更新Facebook Shops产品的库存。 如果您仍然认为Facebook与商店之间的这些同步可以每24小时执行一次,那么下面的代码行会有所帮助。

打开运行商店的WordPress / WooCommerce主题的功能/ 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”将没有问题。

FIX HUGE SQL表:wp_actionscheduler_actions和wp_actionscheduler_logs [WooCommerce提示]

关于作者

隐形

对所有小工具和IT充满热情,我对隐身性感到高兴settings.com自2006年以来,我希望与您一起发现有关计算机和操作系统的新事物 mac操作系统,Linux, Windows,iOS和Android。

发表评论