From 09fa4778c002ff5603946d3c0eef8cd247582d41 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Wed, 9 Oct 2024 23:12:55 +0900 Subject: [PATCH] Add DB queue driver --- common/framework/drivers/queue/base.php | 0 common/framework/drivers/queue/db.php | 123 ++++++++++++++++++++++++ modules/module/schemas/task_queue.xml | 8 ++ 3 files changed, 131 insertions(+) delete mode 100644 common/framework/drivers/queue/base.php create mode 100644 common/framework/drivers/queue/db.php create mode 100644 modules/module/schemas/task_queue.xml diff --git a/common/framework/drivers/queue/base.php b/common/framework/drivers/queue/base.php deleted file mode 100644 index e69de29bb..000000000 diff --git a/common/framework/drivers/queue/db.php b/common/framework/drivers/queue/db.php new file mode 100644 index 000000000..90225f02d --- /dev/null +++ b/common/framework/drivers/queue/db.php @@ -0,0 +1,123 @@ +prepare('INSERT INTO task_queue (handler, args, options) VALUES (?, ?, ?)'); + $result = $stmt->execute([$handler, serialize($args), serialize($options)]); + return $result ? $oDB->getInsertID() : false; + } + + /** + * Get the first task. + * + * @param int $blocking + * @return ?object + */ + public function getTask(int $blocking = 0): ?object + { + $oDB = RFDB::getInstance(); + $stmt = $oDB->query('SELECT * FROM task_queue ORDER BY id LIMIT 1'); + $result = $stmt->fetchObject(); + $stmt->closeCursor(); + + if ($result) + { + $stmt = $oDB->prepare('DELETE FROM task_queue WHERE id = ?'); + $stmt->execute([$result->id]); + + $result->args = unserialize($result->args); + $result->options = unserialize($result->options); + return $result; + } + else + { + return null; + } + } +} diff --git a/modules/module/schemas/task_queue.xml b/modules/module/schemas/task_queue.xml new file mode 100644 index 000000000..6e991a700 --- /dev/null +++ b/modules/module/schemas/task_queue.xml @@ -0,0 +1,8 @@ + + + + + + + +