📘 一、功能原理说明
WooCommerce 使用 Action Scheduler 来管理各种后台定时任务(WP Cron 的队列系统)。
常见任务包括:
- 库存同步
- 邮件发送
- 自动更新价格、订单状态
- 计划任务日志保存
这些任务保存在数据库中(默认表名):
wp_actionscheduler_actionswp_actionscheduler_claimswp_actionscheduler_groups
任务状态字段 status 的常见取值如下:
| 状态名 | 含义 | 是否可安全删除 |
|---|---|---|
complete | 已执行完成 | ✅ 可删 |
cancelled | 已取消 | ✅ 可删 |
expired | 已过期未执行 | ✅ 可删 |
failed | 执行失败 | ✅ 可删 |
pending | 即将执行 / 待执行 | ⚠ 可删(WooCommerce 会重新生成) |
running | 正在执行中 | ❌ 不建议删 |
⚙️ 二、Hostinger 环境下的清理方式
由于 Hostinger 的共享主机环境对 WP-CLI 命令 支持不完整,action-scheduler list / delete / reset 等子命令不可用。
因此推荐以下三种清理方式。
🧩 方法一:通过 phpMyAdmin 清理(最通用)
- 登录 Hostinger → hPanel → 数据库 → phpMyAdmin
- 选择你的网站数据库(一般名称中包含你的域名)。
- 打开 SQL 选项卡。
- 输入以下语句并执行:
DELETE FROM wp_actionscheduler_actions
WHERE status IN ('complete', 'cancelled', 'expired', 'pending', 'failed');
⚠️ 如果你的数据库表前缀不是 wp_(比如 wp7a_),请相应修改。
💡 WooCommerce 会自动重新生成必要的任务,删除不会导致系统崩溃。
🧩 方法二:通过 PHP 脚本清理(适合不会操作 SQL 的情况)
- 在网站根目录(
public_html)中新建文件:clear-as.php - 内容如下:
<?php
require_once( dirname(__FILE__) . '/wp-load.php' );
global $wpdb;
// 删除所有非运行中的任务
$deleted = $wpdb->query("
DELETE FROM {$wpdb->prefix}actionscheduler_actions
WHERE status IN ('complete', 'cancelled', 'expired', 'pending', 'failed')
");
echo "已删除任务总数:{$deleted} 个\n";
- 执行方法(任选一种):
- 在 Hostinger → 开发 → PHP 命令行 中运行:
php clear-as.php - 或直接访问网址:
https://你的域名/clear-as.php
- 在 Hostinger → 开发 → PHP 命令行 中运行:
- 清理完毕后删除该文件,避免被他人访问。
🧩 方法三:使用后台插件临时清理(可视化操作)
安装官方插件 Action Scheduler(WooCommerce 官方维护):
- WordPress 后台 → 插件 → 安装插件
- 搜索 “Action Scheduler”
- 安装并启用
- 前往 工具 → Scheduled Actions
- 选择状态为 Complete, Failed, Pending, Cancelled, Expired 的任务
- 批量删除即可
✅ 优点:安全、可视化操作,不需要 SQL
⚠️ 缺点:如果任务数量太多(上千条),操作会变慢。
🧩 可选优化:清理后压缩表体积
清理大量任务后,表空间不会立即缩小,可以执行以下语句优化数据库:
OPTIMIZE TABLE wp_actionscheduler_actions;
OPTIMIZE TABLE wp_actionscheduler_claims;
OPTIMIZE TABLE wp_actionscheduler_groups;
执行后数据库空间会立即回收,提升后台查询速度。
⚠️ 三、操作前后建议
操作前
- 务必备份数据库:Hostinger → hPanel → 备份 → “生成新备份”
- 建议记录清理前任务数量,方便对比效果。
操作后
- WooCommerce 会自动重新生成必要任务(如库存同步、订单清理)。
- 可以在后台 WooCommerce → 状态 → 日志 / 计划任务 查看是否正常运行。
- 清理完成后可在 phpMyAdmin 中查看表记录数是否减少。
✅ 四、常用 SQL 汇总表
| 目标 | SQL 命令 |
|---|---|
| 删除已完成 | DELETE FROM wp_actionscheduler_actions WHERE status='complete'; |
| 删除失败任务 | DELETE FROM wp_actionscheduler_actions WHERE status='failed'; |
| 删除已取消任务 | DELETE FROM wp_actionscheduler_actions WHERE status='cancelled'; |
| 删除即将进行任务 | DELETE FROM wp_actionscheduler_actions WHERE status='pending'; |
| 删除所有非运行任务 | DELETE FROM wp_actionscheduler_actions WHERE status IN ('complete','cancelled','expired','pending','failed'); |
| 清空整个任务表 | TRUNCATE TABLE wp_actionscheduler_actions;(谨慎) |
| 优化表体积 | OPTIMIZE TABLE wp_actionscheduler_actions; |