一处原文引用20多个参考文献优化

This commit is contained in:
wyn
2026-08-04 17:11:53 +08:00
parent 485d7c8d97
commit 32fb903c5d
4 changed files with 559 additions and 106 deletions

View File

@@ -837,7 +837,10 @@ class ReferenceRelevanceCheckService
/**
* 修复卡住队列:已完成但 queue 未同步;长时间 RUNNING 回退为待执行
*/
public function recoverQueueRowsForArticle($pArticleId)
/**
* @param bool $forceRunning 为 true 时立即回收本篇仍为 RUNNING 的 pending 行(断点续跑用),不再等 10 分钟
*/
public function recoverQueueRowsForArticle($pArticleId, $forceRunning = false)
{
$pArticleId = intval($pArticleId);
if ($pArticleId <= 0) {
@@ -853,17 +856,19 @@ class ReferenceRelevanceCheckService
'queue_status' => self::QUEUE_COMPLETED,
'updated_at' => $now,
]);
// 仅回收“长时间未更新”的 RUNNING,避免多消费者并发时把正在执行的任务误回退成 PENDING
$runningStaleBefore = date('Y-m-d H:i:s', time() - 600);
Db::name('article_reference_relevance_check_result')
// 默认仅回收“长时间未更新”的 RUNNINGforce 时立刻回退,从卡死条继续
$runningQuery = Db::name('article_reference_relevance_check_result')
->where('p_article_id', $pArticleId)
->where('queue_status', self::QUEUE_RUNNING)
->where('status', self::RECORD_PENDING)
->where('updated_at', '<', $runningStaleBefore)
->update([
'queue_status' => self::QUEUE_PENDING,
'updated_at' => $now,
]);
->where('status', self::RECORD_PENDING);
if (!$forceRunning) {
$runningStaleBefore = date('Y-m-d H:i:s', time() - 600);
$runningQuery->where('updated_at', '<', $runningStaleBefore);
}
$runningQuery->update([
'queue_status' => self::QUEUE_PENDING,
'updated_at' => $now,
]);
$staleBefore = date('Y-m-d H:i:s', time() - 600);
Db::name('article_reference_relevance_check_result')
->where('p_article_id', $pArticleId)