Source of file ZendServerShm.php
Size: 3,768 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Cache/Storage/Adapter/ZendServerShm.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Cache\Storage\Adapter; use Zend\Cache\Exception; use Zend\Cache\Storage\ClearByNamespaceInterface; use Zend\Cache\Storage\FlushableInterface; use Zend\Cache\Storage\TotalSpaceCapableInterface; class ZendServerShm extends AbstractZendServer implements ClearByNamespaceInterface, FlushableInterface, TotalSpaceCapableInterface { /** * Constructor * * @param null|array|\Traversable|AdapterOptions $options * @throws Exception\ExtensionNotLoadedException */ public function __construct($options = array()) { if (!function_exists('zend_shm_cache_store')) { throw new Exception\ExtensionNotLoadedException("Missing 'zend_shm_cache_*' functions"); } elseif (PHP_SAPI == 'cli') { throw new Exception\ExtensionNotLoadedException("Zend server data cache isn't available on cli"); } parent::__construct($options); } /* FlushableInterface */ /** * Flush the whole storage * * @return bool */ public function flush() { return zend_shm_cache_clear(); } /* ClearByNamespaceInterface */ /** * Remove items of given namespace * * @param string $namespace * @return bool */ public function clearByNamespace($namespace) { $namespace = (string) $namespace; if ($namespace === '') { throw new Exception\InvalidArgumentException('No namespace given'); } return zend_shm_cache_clear($namespace); } /* TotalSpaceCapableInterface */ /** * Get total space in bytes * * @return int|float */ public function getTotalSpace() { return (int) ini_get('zend_datacache.shm.memory_cache_size') * 1048576; } /* internal */ /** * Store data into Zend Data SHM Cache * * @param string $internalKey * @param mixed $value * @param int $ttl * @return void * @throws Exception\RuntimeException */ protected function zdcStore($internalKey, $value, $ttl) { if (!zend_shm_cache_store($internalKey, $value, $ttl)) { $valueType = gettype($value); throw new Exception\RuntimeException( "zend_shm_cache_store($internalKey, <{$valueType}>, {$ttl}) failed" ); } } /** * Fetch a single item from Zend Data SHM Cache * * @param string $internalKey * @return mixed The stored value or NULL if item wasn't found * @throws Exception\RuntimeException */ protected function zdcFetch($internalKey) { return zend_shm_cache_fetch((string) $internalKey); } /** * Fetch multiple items from Zend Data SHM Cache * * @param array $internalKeys * @return array All found items * @throws Exception\RuntimeException */ protected function zdcFetchMulti(array $internalKeys) { $items = zend_shm_cache_fetch($internalKeys); if ($items === false) { throw new Exception\RuntimeException("zend_shm_cache_fetch(<array>) failed"); } return $items; } /** * Delete data from Zend Data SHM Cache * * @param string $internalKey * @return bool * @throws Exception\RuntimeException */ protected function zdcDelete($internalKey) { return zend_shm_cache_delete($internalKey); } } |