待审核列表显示一万两千条,勾选全选点批量通过,转圈两分钟后返回 500,刷新一看一条都没通过。日志里能对上时间点,这种反而好排。

批量操作把全部编号塞进一次请求,每条评论还要触发钩子和清缓存,执行时间早就超过三十秒。PHP 的 max_execution_time 一到,前面处理的部分也可能回滚。这一点先确认清楚,后面就不用反复试。

for ($i = 0; $i < 60; $i++) {
  wp_set_comment_status($ids[$i], 'approve');
  if ($i % 200 === 0) set_time_limit(30);
}

「评论审核积压」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。

处理上按这个顺序:改成按每批二百条分批处理,前端循环发请求,每批回来再发下一批;先按评论内容分组批量标记,重复内容没必要逐条看;处理前把 PHP 执行时间临时调高,只对这一次请求生效。

结果对不对很好判断,一万条待审核分十批清完,每批返回 200,列表数字逐批下降。

作者 9823189