From 1e7afcbeff30741badf4d1dd556035e2caa2ddc5 Mon Sep 17 00:00:00 2001 From: wyn <1074145239@qq.com> Date: Wed, 5 Aug 2026 11:58:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E5=A4=84=E5=8E=9F=E6=96=87=E5=BC=95?= =?UTF-8?q?=E7=94=A820=E5=A4=9A=E4=B8=AA=E5=8F=82=E8=80=83=E6=96=87?= =?UTF-8?q?=E7=8C=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/mq/ReferenceCheckArticleWorker.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/application/common/mq/ReferenceCheckArticleWorker.php b/application/common/mq/ReferenceCheckArticleWorker.php index 5e82d4a8..dcd2a974 100644 --- a/application/common/mq/ReferenceCheckArticleWorker.php +++ b/application/common/mq/ReferenceCheckArticleWorker.php @@ -41,7 +41,11 @@ class ReferenceCheckArticleWorker } // 先释放其它文章上的僵尸 RUNNING,避免全局串行永久堵死 - $this->recoverStaleForeignBatches($batchId); + try { + $this->recoverStaleForeignBatches($batchId); + } catch (\Throwable $e) { + $this->svc->log('ReferenceCheckArticleWorker recoverStaleForeignBatches err=' . $e->getMessage()); + } if (!$this->canStartArticleWork($batchId)) { $this->svc->log('ReferenceCheckArticleWorker defer batch_id=' . $batchId . ' other article running'); @@ -188,10 +192,12 @@ class ReferenceCheckArticleWorker { $exceptBatchId = intval($exceptBatchId); $staleBefore = date('Y-m-d H:i:s', time() - self::BATCH_STALE_SECONDS); + // ThinkPHP 5:whereRaw 绑参会与命名占位符冲突(HY093),日期直接拼进 SQL + $staleSql = "(updated_at IS NULL OR updated_at < '" . addslashes($staleBefore) . "')"; $rows = Db::name('article_reference_relevance_check_batch') ->where('batch_status', self::BATCH_RUNNING) ->where('id', '<>', $exceptBatchId) - ->whereRaw('(updated_at IS NULL OR updated_at < ?)', [$staleBefore]) + ->whereRaw($staleSql) ->order('id asc') ->limit(20) ->select(); @@ -206,7 +212,7 @@ class ReferenceCheckArticleWorker $affected = Db::name('article_reference_relevance_check_batch') ->where('id', $bid) ->where('batch_status', self::BATCH_RUNNING) - ->whereRaw('(updated_at IS NULL OR updated_at < ?)', [$staleBefore]) + ->whereRaw($staleSql) ->update([ 'batch_status' => self::BATCH_WAITING, 'updated_at' => date('Y-m-d H:i:s'),