wp_actionscheduler_actions和wp_actionscheduler_logs表清理优化

WooCommerce插件使用数据库中的wp_actionsscheduler_actions表来记录计划操作…

WooCommerce插件使用数据库中的wp_actionsscheduler_actions表来记录计划操作的日志,如cron的运行、产品同步、升级等。这些操作一旦执行就应该被删除,但在大多数情况下,这个表使用InnoDB数据库引擎,具有行级锁定功能,意味着可以在表中同时运行多个查询。

对于大流量的网站或与其他网站同步产品的网站来说,这就成了一个问题,因为如果另一个查询正在运行,日志就不能被删除,而且它们会被永远保存。

因此,作为最简单的解决方案,我建议为wp_actionsscheduler_actions表设置MyISAM数据库引擎,使该表只能运行一个查询,这意味着所有其他操作都必须等待第一个操作完成。

当然这比较慢,但这样操作可以从表中删除日志,并阻止它增长GB的大小。

如果要把表的引擎从InnoDB改为MyISAM,请在PHPmyadmin中导航到该表,然后点击图标,在表选项→存储引擎下选择MyISAM,然后点击Go按钮。

另一个解决方案是使用SQL来删除WP-Cron留下的所有状态为 “失败”、”取消 “和 “完成 “的日志。这些都可以从WooCommerce → 状态 → 预定操作页面看到。

以下SQL命令将从wp_actionscheduler_actions表中删除所有包含这些状态的记录:

DELETE FROM `wp_actionscheduler_actions` WHERE `status` IN ('complete','failed','canceled')

要删除wp_actionscheduler_logs,只需清空该表或运行以下命令。

TRUNCATE ` wp_actionscheduler_logs `

日志通常会在创建30天后自动从wp_actionscheduler_logs表中删除。要把这个值改为例如1周,请在你的主题的functions.php文件里添加以下代码。

add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge' );
/**
 * Change Action Scheduler default purge to 1 week
 */
function wpb_action_scheduler_purge() {
 return WEEK_IN_SECONDS;
}
类别:WordPress 进阶教程

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册