Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bareos/bareos-webui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/zendframework/zend-cache/src/Storage/Adapter/Apc.php')
-rw-r--r--vendor/zendframework/zend-cache/src/Storage/Adapter/Apc.php754
1 files changed, 0 insertions, 754 deletions
diff --git a/vendor/zendframework/zend-cache/src/Storage/Adapter/Apc.php b/vendor/zendframework/zend-cache/src/Storage/Adapter/Apc.php
deleted file mode 100644
index ddfcc1d..0000000
--- a/vendor/zendframework/zend-cache/src/Storage/Adapter/Apc.php
+++ /dev/null
@@ -1,754 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 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 APCIterator as BaseApcIterator;
-use stdClass;
-use Traversable;
-use Zend\Cache\Exception;
-use Zend\Cache\Storage\AvailableSpaceCapableInterface;
-use Zend\Cache\Storage\Capabilities;
-use Zend\Cache\Storage\ClearByNamespaceInterface;
-use Zend\Cache\Storage\ClearByPrefixInterface;
-use Zend\Cache\Storage\FlushableInterface;
-use Zend\Cache\Storage\IterableInterface;
-use Zend\Cache\Storage\TotalSpaceCapableInterface;
-
-class Apc extends AbstractAdapter implements
- AvailableSpaceCapableInterface,
- ClearByNamespaceInterface,
- ClearByPrefixInterface,
- FlushableInterface,
- IterableInterface,
- TotalSpaceCapableInterface
-{
- /**
- * Buffered total space in bytes
- *
- * @var null|int|float
- */
- protected $totalSpace;
-
- /**
- * Constructor
- *
- * @param null|array|Traversable|ApcOptions $options
- * @throws Exception\ExceptionInterface
- */
- public function __construct($options = null)
- {
- if (version_compare('3.1.6', phpversion('apc')) > 0) {
- throw new Exception\ExtensionNotLoadedException("Missing ext/apc >= 3.1.6");
- }
-
- $enabled = ini_get('apc.enabled');
- if (PHP_SAPI == 'cli') {
- $enabled = $enabled && (bool) ini_get('apc.enable_cli');
- }
-
- if (!$enabled) {
- throw new Exception\ExtensionNotLoadedException(
- "ext/apc is disabled - see 'apc.enabled' and 'apc.enable_cli'"
- );
- }
-
- parent::__construct($options);
- }
-
- /* options */
-
- /**
- * Set options.
- *
- * @param array|Traversable|ApcOptions $options
- * @return Apc
- * @see getOptions()
- */
- public function setOptions($options)
- {
- if (!$options instanceof ApcOptions) {
- $options = new ApcOptions($options);
- }
-
- return parent::setOptions($options);
- }
-
- /**
- * Get options.
- *
- * @return ApcOptions
- * @see setOptions()
- */
- public function getOptions()
- {
- if (!$this->options) {
- $this->setOptions(new ApcOptions());
- }
- return $this->options;
- }
-
- /* TotalSpaceCapableInterface */
-
- /**
- * Get total space in bytes
- *
- * @return int|float
- */
- public function getTotalSpace()
- {
- if ($this->totalSpace === null) {
- $smaInfo = apc_sma_info(true);
- $this->totalSpace = $smaInfo['num_seg'] * $smaInfo['seg_size'];
- }
-
- return $this->totalSpace;
- }
-
- /* AvailableSpaceCapableInterface */
-
- /**
- * Get available space in bytes
- *
- * @return int|float
- */
- public function getAvailableSpace()
- {
- $smaInfo = apc_sma_info(true);
- return $smaInfo['avail_mem'];
- }
-
- /* IterableInterface */
-
- /**
- * Get the storage iterator
- *
- * @return ApcIterator
- */
- public function getIterator()
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = '';
- $pattern = null;
- if ($namespace !== '') {
- $prefix = $namespace . $options->getNamespaceSeparator();
- $pattern = '/^' . preg_quote($prefix, '/') . '/';
- }
-
- $baseIt = new BaseApcIterator('user', $pattern, 0, 1, APC_LIST_ACTIVE);
- return new ApcIterator($this, $baseIt, $prefix);
- }
-
- /* FlushableInterface */
-
- /**
- * Flush the whole storage
- *
- * @return bool
- */
- public function flush()
- {
- return apc_clear_cache('user');
- }
-
- /* ClearByNamespaceInterface */
-
- /**
- * Remove items by given namespace
- *
- * @param string $namespace
- * @return bool
- */
- public function clearByNamespace($namespace)
- {
- $namespace = (string) $namespace;
- if ($namespace === '') {
- throw new Exception\InvalidArgumentException('No namespace given');
- }
-
- $options = $this->getOptions();
- $prefix = $namespace . $options->getNamespaceSeparator();
- $pattern = '/^' . preg_quote($prefix, '/') . '/';
- return apc_delete(new BaseApcIterator('user', $pattern, 0, 1, APC_LIST_ACTIVE));
- }
-
- /* ClearByPrefixInterface */
-
- /**
- * Remove items matching given prefix
- *
- * @param string $prefix
- * @return bool
- */
- public function clearByPrefix($prefix)
- {
- $prefix = (string) $prefix;
- if ($prefix === '') {
- throw new Exception\InvalidArgumentException('No prefix given');
- }
-
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $nsPrefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $pattern = '/^' . preg_quote($nsPrefix . $prefix, '/') . '/';
- return apc_delete(new BaseApcIterator('user', $pattern, 0, 1, APC_LIST_ACTIVE));
- }
-
- /* reading */
-
- /**
- * Internal method to get an item.
- *
- * @param string $normalizedKey
- * @param bool $success
- * @param mixed $casToken
- * @return mixed Data on success, null on failure
- * @throws Exception\ExceptionInterface
- */
- protected function internalGetItem(& $normalizedKey, & $success = null, & $casToken = null)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $internalKey = $prefix . $normalizedKey;
- $result = apc_fetch($internalKey, $success);
-
- if (!$success) {
- return;
- }
-
- $casToken = $result;
- return $result;
- }
-
- /**
- * Internal method to get multiple items.
- *
- * @param array $normalizedKeys
- * @return array Associative array of keys and values
- * @throws Exception\ExceptionInterface
- */
- protected function internalGetItems(array & $normalizedKeys)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- if ($namespace === '') {
- return apc_fetch($normalizedKeys);
- }
-
- $prefix = $namespace . $options->getNamespaceSeparator();
- $internalKeys = array();
- foreach ($normalizedKeys as $normalizedKey) {
- $internalKeys[] = $prefix . $normalizedKey;
- }
-
- $fetch = apc_fetch($internalKeys);
-
- // remove namespace prefix
- $prefixL = strlen($prefix);
- $result = array();
- foreach ($fetch as $internalKey => & $value) {
- $result[substr($internalKey, $prefixL)] = $value;
- }
-
- return $result;
- }
-
- /**
- * Internal method to test if an item exists.
- *
- * @param string $normalizedKey
- * @return bool
- * @throws Exception\ExceptionInterface
- */
- protected function internalHasItem(& $normalizedKey)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- return apc_exists($prefix . $normalizedKey);
- }
-
- /**
- * Internal method to test multiple items.
- *
- * @param array $normalizedKeys
- * @return array Array of found keys
- * @throws Exception\ExceptionInterface
- */
- protected function internalHasItems(array & $normalizedKeys)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- if ($namespace === '') {
- // array_filter with no callback will remove entries equal to FALSE
- return array_keys(array_filter(apc_exists($normalizedKeys)));
- }
-
- $prefix = $namespace . $options->getNamespaceSeparator();
- $internalKeys = array();
- foreach ($normalizedKeys as $normalizedKey) {
- $internalKeys[] = $prefix . $normalizedKey;
- }
-
- $exists = apc_exists($internalKeys);
- $result = array();
- $prefixL = strlen($prefix);
- foreach ($exists as $internalKey => $bool) {
- if ($bool === true) {
- $result[] = substr($internalKey, $prefixL);
- }
- }
-
- return $result;
- }
-
- /**
- * Get metadata of an item.
- *
- * @param string $normalizedKey
- * @return array|bool Metadata on success, false on failure
- * @throws Exception\ExceptionInterface
- */
- protected function internalGetMetadata(& $normalizedKey)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $internalKey = $prefix . $normalizedKey;
-
- // @see http://pecl.php.net/bugs/bug.php?id=22564
- if (!apc_exists($internalKey)) {
- $metadata = false;
- } else {
- $format = APC_ITER_ALL ^ APC_ITER_VALUE ^ APC_ITER_TYPE ^ APC_ITER_REFCOUNT;
- $regexp = '/^' . preg_quote($internalKey, '/') . '$/';
- $it = new BaseApcIterator('user', $regexp, $format, 100, APC_LIST_ACTIVE);
- $metadata = $it->current();
- }
-
- if (!$metadata) {
- return false;
- }
-
- $this->normalizeMetadata($metadata);
- return $metadata;
- }
-
- /**
- * Get metadata of multiple items
- *
- * @param array $normalizedKeys
- * @return array Associative array of keys and metadata
- *
- * @triggers getMetadatas.pre(PreEvent)
- * @triggers getMetadatas.post(PostEvent)
- * @triggers getMetadatas.exception(ExceptionEvent)
- */
- protected function internalGetMetadatas(array & $normalizedKeys)
- {
- $keysRegExp = array();
- foreach ($normalizedKeys as $normalizedKey) {
- $keysRegExp[] = preg_quote($normalizedKey, '/');
- }
-
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefixL = 0;
-
- if ($namespace === '') {
- $pattern = '/^(' . implode('|', $keysRegExp) . ')' . '$/';
- } else {
- $prefix = $namespace . $options->getNamespaceSeparator();
- $prefixL = strlen($prefix);
- $pattern = '/^' . preg_quote($prefix, '/') . '(' . implode('|', $keysRegExp) . ')' . '$/';
- }
-
- $format = APC_ITER_ALL ^ APC_ITER_VALUE ^ APC_ITER_TYPE ^ APC_ITER_REFCOUNT;
- $it = new BaseApcIterator('user', $pattern, $format, 100, APC_LIST_ACTIVE);
- $result = array();
- foreach ($it as $internalKey => $metadata) {
- // @see http://pecl.php.net/bugs/bug.php?id=22564
- if (!apc_exists($internalKey)) {
- continue;
- }
-
- $this->normalizeMetadata($metadata);
- $result[substr($internalKey, $prefixL)] = $metadata;
- }
-
- return $result;
- }
-
- /* writing */
-
- /**
- * Internal method to store an item.
- *
- * @param string $normalizedKey
- * @param mixed $value
- * @return bool
- * @throws Exception\ExceptionInterface
- */
- protected function internalSetItem(& $normalizedKey, & $value)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $internalKey = $prefix . $normalizedKey;
- $ttl = $options->getTtl();
-
- if (!apc_store($internalKey, $value, $ttl)) {
- $type = is_object($value) ? get_class($value) : gettype($value);
- throw new Exception\RuntimeException(
- "apc_store('{$internalKey}', <{$type}>, {$ttl}) failed"
- );
- }
-
- return true;
- }
-
- /**
- * Internal method to store multiple items.
- *
- * @param array $normalizedKeyValuePairs
- * @return array Array of not stored keys
- * @throws Exception\ExceptionInterface
- */
- protected function internalSetItems(array & $normalizedKeyValuePairs)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- if ($namespace === '') {
- return array_keys(apc_store($normalizedKeyValuePairs, null, $options->getTtl()));
- }
-
- $prefix = $namespace . $options->getNamespaceSeparator();
- $internalKeyValuePairs = array();
- foreach ($normalizedKeyValuePairs as $normalizedKey => &$value) {
- $internalKey = $prefix . $normalizedKey;
- $internalKeyValuePairs[$internalKey] = &$value;
- }
-
- $failedKeys = apc_store($internalKeyValuePairs, null, $options->getTtl());
- $failedKeys = array_keys($failedKeys);
-
- // remove prefix
- $prefixL = strlen($prefix);
- foreach ($failedKeys as & $key) {
- $key = substr($key, $prefixL);
- }
-
- return $failedKeys;
- }
-
- /**
- * Add an item.
- *
- * @param string $normalizedKey
- * @param mixed $value
- * @return bool
- * @throws Exception\ExceptionInterface
- */
- protected function internalAddItem(& $normalizedKey, & $value)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $internalKey = $prefix . $normalizedKey;
- $ttl = $options->getTtl();
-
- if (!apc_add($internalKey, $value, $ttl)) {
- if (apc_exists($internalKey)) {
- return false;
- }
-
- $type = is_object($value) ? get_class($value) : gettype($value);
- throw new Exception\RuntimeException(
- "apc_add('{$internalKey}', <{$type}>, {$ttl}) failed"
- );
- }
-
- return true;
- }
-
- /**
- * Internal method to add multiple items.
- *
- * @param array $normalizedKeyValuePairs
- * @return array Array of not stored keys
- * @throws Exception\ExceptionInterface
- */
- protected function internalAddItems(array & $normalizedKeyValuePairs)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- if ($namespace === '') {
- return array_keys(apc_add($normalizedKeyValuePairs, null, $options->getTtl()));
- }
-
- $prefix = $namespace . $options->getNamespaceSeparator();
- $internalKeyValuePairs = array();
- foreach ($normalizedKeyValuePairs as $normalizedKey => $value) {
- $internalKey = $prefix . $normalizedKey;
- $internalKeyValuePairs[$internalKey] = $value;
- }
-
- $failedKeys = apc_add($internalKeyValuePairs, null, $options->getTtl());
- $failedKeys = array_keys($failedKeys);
-
- // remove prefix
- $prefixL = strlen($prefix);
- foreach ($failedKeys as & $key) {
- $key = substr($key, $prefixL);
- }
-
- return $failedKeys;
- }
-
- /**
- * Internal method to replace an existing item.
- *
- * @param string $normalizedKey
- * @param mixed $value
- * @return bool
- * @throws Exception\ExceptionInterface
- */
- protected function internalReplaceItem(& $normalizedKey, & $value)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $internalKey = $prefix . $normalizedKey;
-
- if (!apc_exists($internalKey)) {
- return false;
- }
-
- $ttl = $options->getTtl();
- if (!apc_store($internalKey, $value, $ttl)) {
- $type = is_object($value) ? get_class($value) : gettype($value);
- throw new Exception\RuntimeException(
- "apc_store('{$internalKey}', <{$type}>, {$ttl}) failed"
- );
- }
-
- return true;
- }
-
- /**
- * Internal method to remove an item.
- *
- * @param string $normalizedKey
- * @return bool
- * @throws Exception\ExceptionInterface
- */
- protected function internalRemoveItem(& $normalizedKey)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- return apc_delete($prefix . $normalizedKey);
- }
-
- /**
- * Internal method to remove multiple items.
- *
- * @param array $normalizedKeys
- * @return array Array of not removed keys
- * @throws Exception\ExceptionInterface
- */
- protected function internalRemoveItems(array & $normalizedKeys)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- if ($namespace === '') {
- return apc_delete($normalizedKeys);
- }
-
- $prefix = $namespace . $options->getNamespaceSeparator();
- $internalKeys = array();
- foreach ($normalizedKeys as $normalizedKey) {
- $internalKeys[] = $prefix . $normalizedKey;
- }
-
- $failedKeys = apc_delete($internalKeys);
-
- // remove prefix
- $prefixL = strlen($prefix);
- foreach ($failedKeys as & $key) {
- $key = substr($key, $prefixL);
- }
-
- return $failedKeys;
- }
-
- /**
- * Internal method to increment an item.
- *
- * @param string $normalizedKey
- * @param int $value
- * @return int|bool The new value on success, false on failure
- * @throws Exception\ExceptionInterface
- */
- protected function internalIncrementItem(& $normalizedKey, & $value)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $internalKey = $prefix . $normalizedKey;
- $value = (int) $value;
- $newValue = apc_inc($internalKey, $value);
-
- // initial value
- if ($newValue === false) {
- $ttl = $options->getTtl();
- $newValue = $value;
- if (!apc_add($internalKey, $newValue, $ttl)) {
- throw new Exception\RuntimeException(
- "apc_add('{$internalKey}', {$newValue}, {$ttl}) failed"
- );
- }
- }
-
- return $newValue;
- }
-
- /**
- * Internal method to decrement an item.
- *
- * @param string $normalizedKey
- * @param int $value
- * @return int|bool The new value on success, false on failure
- * @throws Exception\ExceptionInterface
- */
- protected function internalDecrementItem(& $normalizedKey, & $value)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $internalKey = $prefix . $normalizedKey;
- $value = (int) $value;
- $newValue = apc_dec($internalKey, $value);
-
- // initial value
- if ($newValue === false) {
- $ttl = $options->getTtl();
- $newValue = -$value;
- if (!apc_add($internalKey, $newValue, $ttl)) {
- throw new Exception\RuntimeException(
- "apc_add('{$internalKey}', {$newValue}, {$ttl}) failed"
- );
- }
- }
-
- return $newValue;
- }
-
- /* status */
-
- /**
- * Internal method to get capabilities of this adapter
- *
- * @return Capabilities
- */
- protected function internalGetCapabilities()
- {
- if ($this->capabilities === null) {
- $marker = new stdClass();
- $capabilities = new Capabilities(
- $this,
- $marker,
- array(
- 'supportedDatatypes' => array(
- 'NULL' => true,
- 'boolean' => true,
- 'integer' => true,
- 'double' => true,
- 'string' => true,
- 'array' => true,
- 'object' => 'object',
- 'resource' => false,
- ),
- 'supportedMetadata' => array(
- 'internal_key',
- 'atime', 'ctime', 'mtime', 'rtime',
- 'size', 'hits', 'ttl',
- ),
- 'minTtl' => 1,
- 'maxTtl' => 0,
- 'staticTtl' => true,
- 'ttlPrecision' => 1,
- 'useRequestTime' => (bool) ini_get('apc.use_request_time'),
- 'expiredRead' => false,
- 'maxKeyLength' => 5182,
- 'namespaceIsPrefix' => true,
- 'namespaceSeparator' => $this->getOptions()->getNamespaceSeparator(),
- )
- );
-
- // update namespace separator on change option
- $this->getEventManager()->attach('option', function ($event) use ($capabilities, $marker) {
- $params = $event->getParams();
-
- if (isset($params['namespace_separator'])) {
- $capabilities->setNamespaceSeparator($marker, $params['namespace_separator']);
- }
- });
-
- $this->capabilities = $capabilities;
- $this->capabilityMarker = $marker;
- }
-
- return $this->capabilities;
- }
-
- /* internal */
-
- /**
- * Normalize metadata to work with APC
- *
- * @param array $metadata
- * @return void
- */
- protected function normalizeMetadata(array & $metadata)
- {
- $apcMetadata = $metadata;
- $metadata = array(
- 'internal_key' => isset($metadata['key']) ? $metadata['key'] : $metadata['info'],
- 'atime' => isset($metadata['access_time']) ? $metadata['access_time'] : $metadata['atime'],
- 'ctime' => isset($metadata['creation_time']) ? $metadata['creation_time'] : $metadata['ctime'],
- 'mtime' => isset($metadata['modified_time']) ? $metadata['modified_time'] : $metadata['mtime'],
- 'rtime' => isset($metadata['deletion_time']) ? $metadata['deletion_time'] : $metadata['dtime'],
- 'size' => $metadata['mem_size'],
- 'hits' => isset($metadata['nhits']) ? $metadata['nhits'] : $metadata['num_hits'],
- 'ttl' => $metadata['ttl'],
- );
- }
-
- /**
- * Internal method to set an item only if token matches
- *
- * @param mixed $token
- * @param string $normalizedKey
- * @param mixed $value
- * @return bool
- * @see getItem()
- * @see setItem()
- */
- protected function internalCheckAndSetItem(& $token, & $normalizedKey, & $value)
- {
- if (is_int($token) && is_int($value)) {
- return apc_cas($normalizedKey, $token, $value);
- }
-
- return parent::internalCheckAndSetItem($token, $normalizedKey, $value);
- }
-}