网站运行速度比较慢,但是在检查的时候看到数据库中 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主机中添加定时任务即可。

