您现在的位置是:首页 > 网站制作 > WordpressWordpress

wp_actionscheduler_actions和wp_actionscheduler_logs表清理优化

杰帅2023-07-05【Wordpress】人已围观

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

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;
}

Tags:PHPmyadmin   WooCommerce   WooCommerce教程   WordPress   WordPress教程

很赞哦! ()

文章评论

本站推荐

站点信息

  • 建站时间:2018-10-24
  • 网站程序:帝国CMS7.5
  • 主题模板《今夕何夕》
  • 文章统计1179篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们