清理WordPress 数据库 wp_actionscheduler_actions 和 wp_actionscheduler_logs

麦子
麦子
管理员
1290
文章
0
粉丝
运维技术10字数 450阅读1分30秒阅读模式

网站运行速度比较慢,但是在检查的时候看到数据库中 wp_actionscheduler_actions 和 wp_actionscheduler_logs 2个表特别大,这里需要清理。

#登录数据库,注意自行替换下面命令中的yourdatabase,这个是数据库名。
mysql -u root -p yourdatabase
#输入数据库root密码,然后回车进入数据库。
#清空wp_actionscheduler_logs数据表,注意自行替换wp_表前缀。
TRUNCATE `wp_actionscheduler_logs`;
#然后分别执行下面三行命令,注意自行替换wp_表前缀。
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete';
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled';
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed';

如果担心问题,我们可以先备份数据库。实际上这2个表是因为其他插件导致的缓存数据。

根据上面的方法清理只是治标没能治本,可以通过以下两个方法来彻底清理。

// 每日自动清理数据表 Scheduled Actions
add_filter( 'action_scheduler_retention_period', 'cw_action_scheduler_purge_daily' );
function cw_action_scheduler_purge() {
return DAY_IN_SECONDS;
}
// 每周自动清理数据表 Scheduled Actions
add_filter( 'action_scheduler_retention_period', 'cw_action_scheduler_purge_weekly' );
function cw_action_scheduler_purge() {
return WEEK_IN_SECONDS;
}

在这里,我们可以看到2个PHP代码,选择一个添加到主题的 funcations.php 文件中即可。

#!/bin/bash
user=
password=
database=
host=

echo 'TRUNCATE `wp_actionscheduler_logs`;' | mysql --user="$user" --password="$password" --database="$database" --host="$host"
echo 'DELETE FROM `wp_actionscheduler_actions` WHERE `status` = "complete";' | mysql --user="$user" --password="$password" --database="$database" --host="$host"
echo 'DELETE FROM `wp_actionscheduler_actions` WHERE `status` = "canceled";' | mysql --user="$user" --password="$password" --database="$database" --host="$host"
echo 'DELETE FROM `wp_actionscheduler_actions` WHERE `status` = "failed";' | mysql --user="$user" --password="$password" --database="$database" --host="$host"

这是一个自动清理数据表的脚本,把上面这段脚本代码复制到 auto.sh 文件(脚本名称自己随便起一个),然后在linux主机中添加定时任务即可。

投上你的一票
 
  • 本文由 麦子 发表于2026年6月30日 12:42:53
  • 转载请务必保留本文链接:https://www.zhujipingjia.com/wp-actionscheduler-actions.html