WordPress定时任务实现AAAedubot表按tracking值动态设置删除周期
WordPress分规则定时清理AAAedubot表记录实现方法
核心逻辑调整
你只需要修改原有DELETE语句的WHERE判断条件,按两类记录分别匹配保留周期即可,不需要拆分多次查询:
- 对
tracking字段无有效数据的记录(值为NULL或空字符串),保留1天后删除 - 对
tracking字段存在有效非空数据的记录,保留7天后删除
需要注意判断字段空值时要同时覆盖NULL和空字符串两种场景,避免部分空值记录漏删,原有cron触发逻辑不需要做任何改动。
修改后完整代码
function deletedatabasesession() { global $wpdb; $table_name = $wpdb->prefix . 'AAAedubot'; $wpdb->query( "DELETE FROM {$table_name} WHERE ( (tracking IS NULL OR tracking = '') AND time < DATE_SUB(CURDATE(), INTERVAL 1 DAY) ) OR ( tracking IS NOT NULL AND tracking != '' AND time < DATE_SUB(CURDATE(), INTERVAL 7 DAY) )" ); }
可选优化建议
如果你的AAAedubot表数据量较大,可以给time、tracking两个字段添加联合索引,能大幅提升这条删除语句的执行效率,避免定时任务运行时间过长占用数据库资源。
内容的提问来源于stack exchange,提问作者Club
相关产品推荐
相关产品推荐

