Chris@0: . Chris@0: */ Chris@0: Chris@0: namespace Doctrine\Common\Cache; Chris@0: Chris@0: /** Chris@0: * APC cache provider. Chris@0: * Chris@0: * @link www.doctrine-project.org Chris@0: * @deprecated since version 1.6, use ApcuCache instead Chris@0: * @since 2.0 Chris@0: * @author Benjamin Eberlei Chris@0: * @author Guilherme Blanco Chris@0: * @author Jonathan Wage Chris@0: * @author Roman Borschel Chris@0: * @author David Abdemoulaie Chris@0: */ Chris@0: class ApcCache extends CacheProvider Chris@0: { Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doFetch($id) Chris@0: { Chris@0: return apc_fetch($id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doContains($id) Chris@0: { Chris@0: return apc_exists($id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doSave($id, $data, $lifeTime = 0) Chris@0: { Chris@0: return apc_store($id, $data, $lifeTime); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doDelete($id) Chris@0: { Chris@0: // apc_delete returns false if the id does not exist Chris@0: return apc_delete($id) || ! apc_exists($id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doFlush() Chris@0: { Chris@0: return apc_clear_cache() && apc_clear_cache('user'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doFetchMultiple(array $keys) Chris@0: { Chris@0: return apc_fetch($keys) ?: []; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doSaveMultiple(array $keysAndValues, $lifetime = 0) Chris@0: { Chris@0: $result = apc_store($keysAndValues, null, $lifetime); Chris@0: Chris@0: return empty($result); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function doGetStats() Chris@0: { Chris@0: $info = apc_cache_info('', true); Chris@0: $sma = apc_sma_info(); Chris@0: Chris@0: // @TODO - Temporary fix @see https://github.com/krakjoe/apcu/pull/42 Chris@0: if (PHP_VERSION_ID >= 50500) { Chris@0: $info['num_hits'] = isset($info['num_hits']) ? $info['num_hits'] : $info['nhits']; Chris@0: $info['num_misses'] = isset($info['num_misses']) ? $info['num_misses'] : $info['nmisses']; Chris@0: $info['start_time'] = isset($info['start_time']) ? $info['start_time'] : $info['stime']; Chris@0: } Chris@0: Chris@0: return array( Chris@0: Cache::STATS_HITS => $info['num_hits'], Chris@0: Cache::STATS_MISSES => $info['num_misses'], Chris@0: Cache::STATS_UPTIME => $info['start_time'], Chris@0: Cache::STATS_MEMORY_USAGE => $info['mem_size'], Chris@0: Cache::STATS_MEMORY_AVAILABLE => $sma['avail_mem'], Chris@0: ); Chris@0: } Chris@0: }