namibia
df0489e1eeeeab5a9bd44e1d84fce49924fe1bac
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
<?php namespace Utility; /** * Central cache functionality. * @author andre.fourie * */ class Cache { /** * @var \Memcache */ static protected $cache = null; /** * @var boolean */ static protected $cacheKick = true; /** * @var array */ static private $loadedFromCache = array(); /** * Store data in cache. * @param string $key * @param unknown $value * @param integer $ttl * @return boolean */ static public function store($key, $value, $ttl = 0) { if (is_null(self::$cache)) { self::$cache = new \Memcache(); self::$cache->pconnect('localhost', 11211); } return self::$cache->set($key, $value, 0, $ttl); } /** * Fetch data from cache. * @param string $key * @param unknown $default * @return unknown */ static public function fetch($key, $default = false) { if (is_null(self::$cache)) { self::$cache = new \Memcache(); self::$cache->pconnect('localhost', 11211); } $value = self::$cache->get($key); return false !== $value ? $value : $default; } /** * Delete cached item. * @param string $key */ static public function delete($key) { if (is_null(self::$cache)) { self::$cache = new \Memcache(); self::$cache->pconnect('localhost', 11211); } self::$cache->delete($key); } /** * Load a doctrine entity from cache. If not found in cache it will load from db and store in cache. * @param string $entityName * @param integer $id * @param \Doctrine\ORM\EntityManager $em * @param number $ttl * @param number $depth * @return unknown */ static public function fetchEntity($entityName, $id, \Doctrine\ORM\EntityManager $em, $ttl = 300, $depth = 1) { if (isset(self::$loadedFromCache[$entityName . $id])) { $record = $em->getRepository($entityName)->find($id); return !is_null($record) ? $record->toArray() : null; } $cachedEntity = self::fetch($entityName . '::' . $id); if (false !== $cachedEntity) { return $cachedEntity; } $entity = $em->getRepository($entityName)->find($id); if (!is_null($entity)) { $entity = $entity->toArray(); self::store($entityName . '::' . $id, $entity, $ttl); self::$loadedFromCache[$entityName . $id] = true; } return $entity; } } |
Commits for namibiamodule/Utility/src/Utility/Cache-backup.php
Revision | Author | Commited | Message |
---|---|---|---|
df0489 ... | Mark | Fri 14 Oct, 2016 10:01:00 +0000 | initial commit |