From a89cdfa16f8790fc6d677130226ae68ecf5d9007 Mon Sep 17 00:00:00 2001 From: Alan Date: Tue, 27 Sep 2022 11:34:08 +0800 Subject: [PATCH] add caching to core_enum lookup --- DataObjects/Core_enum.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/DataObjects/Core_enum.php b/DataObjects/Core_enum.php index 739134b5..29ef576b 100644 --- a/DataObjects/Core_enum.php +++ b/DataObjects/Core_enum.php @@ -254,6 +254,12 @@ class Pman_Core_DataObjects_Core_enum extends DB_DataObject function lookupCreate($etype,$name, $display_name=false) { + static $cache = array(); + $ckey = json_encode(array($etype, $name)); + if (isset($cache[$ckey])) { + return $cache[$ckey]->id; + } + // check $ce = DB_DataObject::Factory('core_enum'); $ce->setFrom(array( @@ -269,11 +275,14 @@ class Pman_Core_DataObjects_Core_enum extends DB_DataObject $ce->etype = $etype; $ce->name = $name; if ($ce->find(true)) { + $cache[$ckey] = $ce->id; return $ce->id; } $ce->active = 1; $ce->display_name = $display_name === false ? $ce->name : $display_name; - return $ce->insert(); + $ret = $ce->insert(); + $cache[$ckey] = $ret; + return $ret; } -- 2.39.2