Skip to content
Snippets Groups Projects
Commit d9d00494 authored by Kurund Jalmi's avatar Kurund Jalmi
Browse files

cache civicrm_cache table

parent 8c52547a
No related branches found
No related tags found
No related merge requests found
......@@ -58,18 +58,32 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache {
* @access public
*/
static function &getItem($group, $path, $componentID = NULL) {
$dao = new CRM_Core_DAO_Cache();
$dao->group_name = $group;
$dao->path = $path;
$dao->component_id = $componentID;
$data = NULL;
if ($dao->find(TRUE)) {
$data = unserialize($dao->data);
static $_cache = NULL;
if ($_cache === NULL) {
$_cache = array();
}
$dao->free();
return $data;
$argString = "CRM_CT_{$group}_{$path}_{$componentID}";
if (!array_key_exists($argString, $_cache)) {
$cache = CRM_Utils_Cache::singleton();
$_cache[$argString] = $cache->get($argString);
if (!$_cache[$argString]) {
$dao = new CRM_Core_DAO_Cache();
$dao->group_name = $group;
$dao->path = $path;
$dao->component_id = $componentID;
$data = NULL;
if ($dao->find(TRUE)) {
$data = unserialize($dao->data);
}
$dao->free();
$_cache[$argString] = $data;
$cache->set($argString, $_cache[$argString]);
}
}
return $_cache[$argString];
}
/**
......@@ -83,18 +97,34 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache {
* @access public
*/
static function &getItems($group, $componentID = NULL) {
$dao = new CRM_Core_DAO_Cache();
$dao->group_name = $group;
$dao->component_id = $componentID;
$dao->find();
$result = array(); // array($path => $data)
while ($dao->fetch()) {
$result[$dao->path] = unserialize($dao->data);
static $_cache = NULL;
if ($_cache === NULL) {
$_cache = array();
}
$dao->free();
return $result;
$argString = "CRM_CT_CI_{$group}_{$componentID}";
if (!array_key_exists($argString, $_cache)) {
$cache = CRM_Utils_Cache::singleton();
$_cache[$argString] = $cache->get($argString);
if (!$_cache[$argString]) {
$dao = new CRM_Core_DAO_Cache();
$dao->group_name = $group;
$dao->component_id = $componentID;
$dao->find();
$result = array(); // array($path => $data)
while ($dao->fetch()) {
$result[$dao->path] = unserialize($dao->data);
}
$dao->free();
$_cache[$argString] = $result;
$cache->set($argString, $_cache[$argString]);
}
}
return $_cache[$argString];
}
/**
......@@ -110,6 +140,11 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache {
* @access public
*/
static function setItem(&$data, $group, $path, $componentID = NULL) {
static $_cache = NULL;
if ($_cache === NULL) {
$_cache = array();
}
$dao = new CRM_Core_DAO_Cache();
$dao->group_name = $group;
......@@ -133,6 +168,11 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache {
$lock->release();
$dao->free();
// set the cache in memory
$argString = "CRM_CT_{$group}_{$path}_{$componentID}";
$cache = CRM_Utils_Cache::singleton();
$cache->set($argString, $dao->data);
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment