From ffeb9133ab8f6c73b7c22d9cddaee4dc5a72f4b7 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 12 Dec 2024 01:55:55 +0900 Subject: [PATCH] Update first_run timestamp of tasks run at an interval --- common/framework/Queue.php | 2 +- common/framework/drivers/queue/db.php | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/common/framework/Queue.php b/common/framework/Queue.php index dd32e9fe4..a862e05c5 100644 --- a/common/framework/Queue.php +++ b/common/framework/Queue.php @@ -321,7 +321,7 @@ class Queue $tasks = $db_driver->getScheduledTasks('interval'); foreach ($tasks as $task) { - $db_driver->updateLastRunTimestamp($task->task_srl); + $db_driver->updateLastRunTimestamp($task); self::_executeTask($task); } } diff --git a/common/framework/drivers/queue/db.php b/common/framework/drivers/queue/db.php index 85eb22f58..43f68be6b 100644 --- a/common/framework/drivers/queue/db.php +++ b/common/framework/drivers/queue/db.php @@ -253,13 +253,21 @@ class DB implements QueueInterface /** * Update the last executed timestamp of a scheduled task. * - * @param int $id + * @param object $task * @return void */ - public function updateLastRunTimestamp(int $task_srl): void + public function updateLastRunTimestamp(object $task): void { $oDB = RFDB::getInstance(); - $stmt = $oDB->prepare('UPDATE task_schedule SET last_run = ?, run_count = run_count + 1 WHERE task_srl = ?'); - $stmt->execute([date('Y-m-d H:i:s'), $task_srl]); + if ($task->first_run) + { + $stmt = $oDB->prepare('UPDATE task_schedule SET last_run = ?, run_count = run_count + 1 WHERE task_srl = ?'); + $stmt->execute([date('Y-m-d H:i:s'), $task->task_srl]); + } + else + { + $stmt = $oDB->prepare('UPDATE task_schedule SET first_run = ?, last_run = ?, run_count = run_count + 1 WHERE task_srl = ?'); + $stmt->execute([date('Y-m-d H:i:s'), date('Y-m-d H:i:s'), $task->task_srl]); + } } }