Related tags

Caching zend-cache
Overview

zend-cache

Repository abandoned 2019-12-31

This repository has moved to laminas/laminas-cache.

Build Status Coverage Status

Zend\Cache provides a general cache system for PHP. The Zend\Cache component is able to cache different patterns (class, object, output, etc) using different storage adapters (DB, File, Memcache, etc).

Benchmarks

We provide scripts for benchmarking zend-cache using the PHPBench framework; these can be found in the benchmark/ directory.

To execute the benchmarks you can run the following command:

$ vendor/bin/phpbench run --report=aggregate
Comments
  • Added PSR-6 adapter

    Added PSR-6 adapter

    This PR address #46, adding a PSR-6 wrapper.

    Some key points:

    • Not all storage adapters are supported, due the PSR-6 requirement that individual cache items must support separate TTLs, set on save. This rules out Dba, Filesystem, Memory, Session and Redis < v2
    • PSR-6 Error Handling requires that most exceptions thrown by the storage adapter be suppressed. I've provided an ExceptionLogger so these can be saved to a PSR-3 compatible logger. Some documentation is probably in order!
    • There are some useful integration tests at https://github.com/php-cache/integration-tests. I haven't got around to incorporating those yet - only discovered them yesterday.

    Happy New Year!

    enhancement 
    opened by kynx 28
  • Set ttl to specific cache key for Redis Storage Adapter

    Set ttl to specific cache key for Redis Storage Adapter

    • Implemented the internalTouchItem method inside Storage\Adapter\Redis that allow to touch a Redis item.
    • Implemented the _ttl metadata, that return the remaining tll of a specific key

    Thanks to @marc-mabe to help me understanding what to do!

    Refer to #5, I have created a new PR to clean my code from other local branches that was creating troubles.

    bug enhancement 
    opened by pensiero 23
  • Changed to public all the getXXXResource methods of the cache adapters

    Changed to public all the getXXXResource methods of the cache adapters

    This PR is a consequence of the issue #12

    It's useful in case someone wants to obtain the resource and pass it to other modules that need the original resource, (avoid creating and configuring a new resource, but re-use the one previously configured).

    enhancement wontfix Test 
    opened by pensiero 18
  • Provide a PSR-16 decorator for zend-cache storage adapters

    Provide a PSR-16 decorator for zend-cache storage adapters

    This patch serves as an alternative to #126, based on a comment by @marc-mabe to that patch.

    The patch adds a new class, Zend\Cache\Psr\SimpleCacheDecorator, which accepts a zend-cache storage instance to its constructor, and then proxies to it via the methods that implement the PSR-16 CacheInterface. The approach is simpler than that in #126 as it does not require testing against every adapter; we can test the decorator against a mock of the StorageInterface, validating its behavior. The tests provided also ensure that any exceptions thrown by the underlying storage operations are re-cast to PSR-16 implementations.

    This approach may miss a few details; each of @marc-mabe, @kynx, and @boesing raised a few issues in #126 that I am uncertain if this approach covers. I'd love feedback before I merge this.

    TODO

    • [x] Validate keys to ensure they do not contain reserved characters
    • [x] Validate keys to ensure they do not exceed maximum length
    • [x] Detect whether the zend-cache adapter requires serialization; if so, serialize values before storage, and deserialize on retrieval.
    • [x] Implement TTL capabilities per PSR-16:
      • [x] If a negative or zero TTL is provided, have set() and setMultiple() remove the item(s) from the cache (instead of storing).
      • [x] If the adapter does not support TTL semantics, have set() and setMultiple() return boolean false for non-null, >0 TTL values.
    • [ ] Implement integration tests for as many adapters as make sense.
    enhancement WIP 
    opened by weierophinney 14
  • Cleanup composer.json

    Cleanup composer.json

    Serializer in is "suggest" since 99f1ee0876b1c65bfdd26228919287318fd2a4a7 and is not mandatory according to closed PR #16 So make dep consistent.

    opened by remicollet 14
  • Adds Redis sIsMember and sAdd Taggable capabilities [POC]

    Adds Redis sIsMember and sAdd Taggable capabilities [POC]

    PROOF OF CONCEPT

    • Implementation could also just be added to redis alone, as apposed to the Abstract Adapter ?

    fixes #83

    example request:

    $this->redis->sAdd('key', 'value1');
    $this->redis->sAdd('key', 'value2');
    $this->redis->sAdd('key', 'value3');
    
    $this->sIsMember('key', 'value1'); // returns true
    $this->sIsMember('key', 'value2'); // returns true
    $this->sIsMember('key', 'value6'); // returns false
    
    opened by jeremymills 13
  • Set ttl to specific cache key for Redis Storage Adapter

    Set ttl to specific cache key for Redis Storage Adapter

    Implemented two methods inside the Storage\Adapter\Redis that allow to:

    • set a ttl to a specific key after setting it up (setTimeout)
    • get the remaining tll of a specific key (getRemainingTimeout)

    Actually is possible to specify a ttl to the adapter, but it will be assumed by all the keys that are setted up after the initialization. Tests and interface implemented.

    opened by pensiero 12
  • Check if the persistent_id key is set in the RedisResource Manager

    Check if the persistent_id key is set in the RedisResource Manager

    I'm trying to create a RedisFactory and I start with a simple

    
    $redisOptions = new RedisOptions();
    $redisOptions
        ->setServer($redisServer)
        ->setNamespace('Uala_Redis')
        ->setPersistentId('RDB')
        ->setTtl(3600);
    
    $redisOptions->setLibOptions([
        \Redis::OPT_SERIALIZER => \Redis::SERIALIZER_PHP
    ]);
    
    $redis = new Redis($redisOptions);
    

    However, when it's initialized I receive this warning:

    ( ! ) Notice: Undefined index: persistent_id in /Users/Oscar/Sites/uala/vendor/zendframework/zendframework/library/Zend/Cache/Storage/Adapter/RedisResourceManager.php on line 267
    

    Someone know why?

    I'm using redis-server v3.0.2 and php-redis v2.2.7

    Thanks

    bug 
    opened by pensiero 12
  • Fix a bug where the Redis adapter returns an int for hasItem()

    Fix a bug where the Redis adapter returns an int for hasItem()

    Version 4 of the Redis extension returns an integer instead of a boolean when exists() is called. See https://github.com/phpredis/phpredis/blob/develop/README.markdown#exists

    opened by MidnightDesign 11
  • add composer.lock & update travis config

    add composer.lock & update travis config

    as per zendframework/zendframework#7660

    also entails these changes:

    • bump minimum php version to 5.6
    • add composer scripts entries
    • fix travis.yml env variables to not be affected by travis-ci/travis-ci#1444
    • fix build on php 7
    BC Break 
    opened by stefanotorresi 11
  • Why the resource is not public accessible?

    Why the resource is not public accessible?

    Why the method getRedisResource() is protected and not public?

    In my case, I need to obtain the Redis resource and pass it to some modules (in this case, DoctrineORM).

    wontfix 
    opened by pensiero 11
  • Make it possible to decorate cache adapters with PSR6/PSR16 decorators through configuration

    Make it possible to decorate cache adapters with PSR6/PSR16 decorators through configuration

    @weierophinney

    Good morning,

    The configuration provider currently provides the \Zend\Cache\Service\StorageCacheAbstractServiceFactory::class abstract factory which make it possible to map pseudo services. For instance:

    // Dependencies
    ...
    'factories' => [
    	\iMPSCP\ApplicationCache::class => \Zend\Cache\Service\StorageCacheAbstractServiceFactory::class
    ]
    ...
    
    // Config
    ...
     'caches' => [
    	\iMSCP\ApplicationCache::class => [
    		'adapter' => [
    			'name'    => \Zend\Cache\Storage\Adapter\Apcu::class,
    			'options' => [
    				'namespace' => \iMSCP\ApplicationCache::class,
    			]
    		],
    		'plugins' => [
    			\Zend\Cache\Storage\Plugin\ExceptionHandler::class => [
    				'throw_exceptions' => false,
    			],
    			\Zend\Cache\Storage\Plugin\IgnoreUserAbort::class => [
    				'exit_on_abort' => false
    			]
    		]
    	]
    ]
    ...
    

    However, currently, it seem that there is no way to decorate the adapters automatically with a PSR6 or PSR16 implementation. Could it be possible to add a decorator option to the adapters factory and if so, automatically return the decorated adapter? For instance:

    // Config
    ...
     'caches' => [
    	\iMSCP\ApplicationCache::class => [
    		'adapter' => [
    			'name'    => \Zend\Cache\Storage\Adapter\Apcu::class,
    			'options' => [
    				'namespace' => \iMSCP\ApplicationCache::class,
    			]
    		],
    		'plugins' => [
    			\Zend\Cache\Storage\Plugin\ExceptionHandler::class => [
    				'throw_exceptions' => false,
    			],
    			\Zend\Cache\Storage\Plugin\IgnoreUserAbort::class => [
    				'exit_on_abort' => false
    			]
    		],
    		decorator' => \Zend\Cache\Psr\SimpleCache\SimpleCacheDecorator::class
    	]
    ]
    ...
    

    For now, I make use of a delegator but...

    <?php
    
    declare(strict_types=1);
    
    namespace iMSCP\Foundation\Container;
    
    use Psr\Container\ContainerInterface;
    use Psr\SimpleCache\CacheInterface;
    use Zend\Cache\Psr\SimpleCache\SimpleCacheDecorator;
    use Zend\Cache\Storage\StorageInterface;
    
    class ApplicationCacheDelegatorFactory
    {
        /**
         * Decorate a cache adapter with a PSR16 implementation
         *
         * @param ContainerInterface $container
         * @param string $serviceName
         * @param callable $callback
         * @return CacheInterface
         */
        public function __invoke(ContainerInterface $container, string $serviceName, callable $callback): CacheInterface
        {
            try {
                /** @var StorageInterface $storage */
                $storage = $callback();
                
                if($container->get('config')['debug'] ?? false) {
                    $storage->setOptions([
                        'readable'  => false,
                        'writable'  => false,
                    ]);
                }
                
                // PSR-16 implementation
                $storage = new SimpleCacheDecorator($storage);
            } catch (\Throwable $e) {
                // PSR-16 implementation (fallback)
                $storage = $this->fallbackPsr16Impl();
            }
    
            return $storage;
        }
    
        protected function fallbackPsr16Impl()
        {
            return (new class implements CacheInterface
            {
                public function get($key, $default = NULL)
                {
                    return false;
                }
    
                public function set($key, $value, $ttl = NULL)
                {
                    return false;
                }
    
                public function delete($key)
                {
                    return false;
                }
    
                public function clear()
                {
                    return false;
                }
    
                public function getMultiple($keys, $default = NULL)
                {
                    return [];
                }
    
                public function setMultiple($values, $ttl = NULL)
                {
                    return false;
                }
                
                public function deleteMultiple($keys)
                {
                    return false;
                }
    
                public function has($key)
                {
                    return false;
                }
            });
        }
    }
    
    opened by nuxwin 1
  • Added `PluginAwareInterface` and marked `EventsCapableInterface` as deprecated

    Added `PluginAwareInterface` and marked `EventsCapableInterface` as deprecated

    Since the StorageFactory only checks for the EventsCapableInterface, it would result in a Call to undefined method WhateverStorage::hasPlugin.

    Therefore, I would like to introduce that PluginAwareInterface for ZF3 and until then, I would like to mark the EventsCapableInterface usage as deprecated and provide this backport request.

    enhancement 
    opened by boesing 7
  • [ZF3] Remove StorageFactory and PatternFactory

    [ZF3] Remove StorageFactory and PatternFactory

    Hey there,

    I would like to drop those abstract factories in favor of using the related PluginManagers directly. Since #93 introduces external packages, it will get more and more difficult to attach plugins/storage adapters to the PluginManagers, if not retrieved by the projects ContainerInterface.

    Imho, each external package should provide their own factories for their plugins/storage adapters and just inject these to the related PluginManager (e.g. by using delegators? Some feedback would be great).

    The original idea of @marc-mabe was to use the Module object to add aliases and factories to the PluginManager but as of zend-config-aggregator or in projects without zend-mvc, this wont work anymore.

    I would appreciate to get some feedback on this. @weierophinney

    enhancement 
    opened by boesing 2
  • SimpleCacheDecorator and providesPerItemTtl leads undocumented behaviors

    SimpleCacheDecorator and providesPerItemTtl leads undocumented behaviors

    The SimpleCacheDecorator returns false and doesn't store the item if the underlying storage doesn't has the staticTtl capability. For testing purposes I changed from an APCU storage to memory storage. Our tests where failing due to the fact that the memory storage has no per item ttl support => in other words staticTtl = false. https://github.com/zendframework/zend-cache/blob/580cb67bf645c1765c3463b16c97903d797c3b19/src/Psr/SimpleCache/SimpleCacheDecorator.php#L360

    In our code base we where not checking the return value of CacheInterface::set(), which in the case of memory return false.

    <?php
    use Zend\Cache\StorageFactory;
    use Zend\Cache\Psr\SimpleCache\SimpleCacheDecorator;
    
    $storage = StorageFactory::factory([
        'adapter' => [
            'name'    => 'memory',
            'options' => ['ttl' => 3600],
        ],
    ]);
    
    $cache = new SimpleCacheDecorator($storage);
    
    if (true === $cache->set('someKey', $value, 30)) {
        echo 'success';
    } else {
        echo 'fail';
    }
    

    The documentation has no information about this behavior:

    When setting values, whether single values or multiple, you can also optionally provide a Time To Live (TTL) value. This proxies to the underlying storage instance's options, temporarily resetting its TTL value for the duration of the operation. TTL values may be expressed as integers (in which case they represent seconds) or DateInterval instances. As examples:
    

    In our case we set a TTL on the adapter level. But we also set the TTL per item to make sure the item has the same TTL even when we replace the underlying PSR-16 library.

    Our workaround for the moment is to set the per item TTL to null for an Zend cache adapter that doesn't support staticTtl. This adds some unwanted conditional if/else and knowledge about the special behavior. There is also the problem if the internal detection state of providesPerItemTtl changes in never releases we need to adopt to this changes.

    Possible solution (eater one of them or a combination)##

    • If the TTL of the item is the same as the TTL of the storage adapter allow the per item TTL.
    • If no storage adapter TTL is set silently ignore the TTL and fall back to the storage default => this is what https://www.php-fig.org/psr/psr-16/#13-cache suggests
    • Add a configuration flag to the SimpleCacheDecorator to handle the failure state:
      • ignore failure of storage not supports per item ttl => this helps getting aware of the issue and can be added to the docs
    • expose the storage and providesPerItemTtl to allow for workarounds
    awaiting author updates 
    opened by dol 4
  • Component split

    Component split

    I would like to get your opinions about splitting zend-cache into different components. The reason for that is simply a testing and dependency hell.

    • It's not possible to define a required extension in composer.json so all adapters have to manually check if the current environment is matching the requirements
    • Testing against all adapters is a nightmare and takes very long.
      • The travis.yml file al already very complex but it still doesn't test all common cases.
      • Some extensions are missing or not 100% compatible for PHP-7 which makes things here more complicated.
      • Doesn't test against different (most common) extension versions
      • Nearly impossible to run tests for ZendServer adapters
    • another reason is that normally you only need 1 or 2 adapters but that's not very important as zend-cache doesn't install so many files per adapter.

    In my opinion it makes sense to split parts into it's own repository as long as the part requires a non standard extension or another currently optional dependency.

    Thoughts ?

    This is a structure how this could look like:

    zendframework/zend-cache

    • Exceptions
    • Patterns
    • Service
    • Factories
    • Storage Interfaces
    • Storage Plugins
      • all except the Serializer plugin
    • Storage Adapters
      • BlackHole
      • Filesystem
      • Memory

    zendframework/zend-cache-serializer

    • adds the serializer storage plugin which requires zend-serializer

    zendframework/zend-cache-apc

    • adds the Apc storage adapter requires the apc extension (or compatible extension)

    zendframework/zend-cache-apcu

    • adds the Apcu storage adapter requires the apcu extension

    zendframework/zend-cache-dba

    • adds the Dba storage adapter requires the dba extension

    zendframework/zend-cache-memcache

    • adds the Memcache storage adapter requires the memcache extension

    zendframework/zend-cache-memcached

    • adds the Memcached storage adapter requires the memcached extension

    zendframework/zend-cache-mongo

    • adds the Mongo storage adapter requires the mongo extension
    • It's currently the MongoDb adapter but there is also another extension called mongodb

    zendframework/zend-cache-redis

    • adds the Redis storage adapter requires the redis extension

    zendframework/zend-cache-session

    • adds the Session storage adapter requires the zend-session

    zendframework/zend-cache-wincache

    • adds the WinCache storage adapter requires the wincache extension

    zendframework/zend-cache-xcache

    • adds the XCache storage adapter requires the xcache extension

    zendframework/zend-cache-zendserver

    • adds the ZendDataCacheDisk and ZendDataCacheShm storage adapter requires the zend data cache extension
    • This is currently called ZendServerDisk / ZendServerShm because the extension is part of Zend Server
    question 
    opened by marc-mabe 16
Releases(release-2.9.0)
  • release-2.9.0(Aug 29, 2019)

    Added

    • #178 adds support for PHP 7.3.

    Changed

    • #186 replaces deprecated delete() calls with del() in Redis adapter. delete() function is deprecated since version 5.0.0 and del() is available since version 2.1.0.

    Deprecated

    • Nothing.

    Removed

    • #178 removes support for zend-stdlib v2 releases.

    Fixed

    • Nothing.
    Source code(tar.gz)
    Source code(zip)
  • release-2.8.3(Aug 28, 2019)

    Added

    • Nothing.

    Changed

    • Nothing.

    Deprecated

    • Nothing.

    Removed

    • Nothing.

    Fixed

    • #184 fixes an issue with SimpleCacheDecorator where elements were deleted after creation. Wrong TTL was set instead of using default value from options.

    • #182 fixes a typo in variable name within the ExtMongoDbResourceManager::getResource method which prevented using custom db name when using that adapter.

    Source code(tar.gz)
    Source code(zip)
  • release-2.8.2(May 1, 2018)

    Added

    • Nothing.

    Changed

    • Nothing.

    Deprecated

    • Nothing.

    Removed

    • Nothing.

    Fixed

    • #168 fixes a typo in a variable name within the Filesystem::setTags() method which prevented clearing of tags when using that adapter.
    Source code(tar.gz)
    Source code(zip)
  • release-2.8.1(Apr 26, 2018)

    Added

    • Nothing.

    Changed

    • Nothing.

    Deprecated

    • Nothing.

    Removed

    • Nothing.

    Fixed

    • #165 fixes an issue with the memcached adapter ensuring that retrieval returns boolean false when unable to retrieve the requested item.
    Source code(tar.gz)
    Source code(zip)
  • release-2.8.0(Apr 24, 2018)

    Added

    • #148 adds support for PHP 7.1 and 7.2.

    • #46, #155, and #161 add support for PSR-6 (Caching Interface). They provides an implementation of Psr\Cache\CacheItemPoolInterface via Zend\Cache\Psr\CacheItemPool\CacheItemPoolDecorator, which accepts a Zend\Cache\Storage\StorageInterface instance to its constructor, and proxies the various PSR-6 methods to it. It also provides a Psr\Cache\CacheItemInterface implementation via Zend\Cache\Psr\CacheItemPool\CacheItem, which provides a value object for both introspecting cache fetch results, as well as providing values to cache.

    • #152, #155, #159, and #161 add an adapter providing PSR-16 (Caching Library Interface) support. The new class, Zend\Cache\Psr\SimpleCache\SimpleCacheDecorator, accepts a Zend\Cache\Storage\StorageInterface instance to its constructor, and proxies the various PSR-16 methods to it.

    • #154 adds an ext-mongodb adapter, Zend\Cache\Storage\Adapter\ExtMongoDb. You may use the StorageFactory to create an instance using either the fully qualified class name as the adapter name, or the strings ext_mongo_db or ExtMongoDB (or most variations on case of the latter string). The options it accepts are the same as for the existing Zend\Cache\Storage\Adapter\MongoDb, and it provides the same capabilities. The adapter requires the mongodb/mongodb package to operate.

    • #120 adds the ability to configure alternate file suffixes for both cache and tag cache files within the Filesystem adapter. Use the suffix and tag_suffix options to set them; they will default to dat and tag, respectively.

    • #79 Add capability for the "lock-on-expire" feature (úsed by Zend Data Cache)

    Changed

    • #116 adds docblock method chaining consistency.

    Deprecated

    • Nothing.

    Removed

    • #101 removes support for PHP 5.5.

    • #148 removes support for HHVM.

    Fixed

    • #151 adds logic to normalize options before creating the underlying Redis resource when using a Redis adapter, fixing issues when using an array with the server and port to use for connecting to the server.

    • #151 adds logic to prevent changing the underlying resource within Redis adapter instances.

    • #150 fixes an issue with how CAS tokens are handled when using the memcached adapter.

    • #61 sets the Zend Data Cache minTtl value to 1.

    • #147 fixes the Redis extension by ensuring it casts the results of exists() to a boolean when testing if the storage contains an item.

    • #146 fixes several methods to change @return annotations to @throws where applicable.

    • #134 adds a missing import statement for Traversable within the AdapterOptions class.

    • #128 Fixed incorrect variable usage in MongoDbResourceManager

    Source code(tar.gz)
    Source code(zip)
  • release-2.7.2(Apr 19, 2018)

    Added

    • #124 New coding standard

    Deprecated

    • #123 Deprecate capability "expiredRead". It's basically providing the same information as staticTtl but from a wrong PoV

    Removed

    • Nothing.

    Fixed

    • #122 Fixed redis doc for lib_options (not lib_option)
    • #118 fixed redis tests in case running with different server
    • #119 Redis: Don't call method Redis::info() every time
    • #113 Travis: Moved coverage reporting to latest env
    • #114 Travis: removed fast_finish flag
    • #107 fixed redis server version test in Redis::internalGetMetadata()
    • #111 Fixed typo in storage adapter doc
    • #102 filesystem: fixes a lot of possible race conditions
    Source code(tar.gz)
    Source code(zip)
  • release-2.7.1(May 12, 2016)

    Added

    • #35 Added benchmarks using PHPBench

    Deprecated

    • Nothing.

    Removed

    • Nothing.

    Fixed

    • #76 ZendServer: fixed return null on missing item
    • #88 Redis: fixed segfault on storing NULL and fixed supported datatypes capabilities
    • #95 don't try to unserialize missing items
    • #66 fixed Memcached::internalSetItems in PHP-7 by reducing variables by reference
    • #57 Memcached: HHVM compatibility and reduced duplicated code
    • #91 fixed that order of adapter options may cause exception
    • #98 updates the plugin manager alias list to ensure all adapter name permutations commonly used are accepted.
    Source code(tar.gz)
    Source code(zip)
  • release-2.7.0(Apr 12, 2016)

    Added

    • #59 XCache >= 3.1.0 works in CLI mode
    • #23 #47 Added an Apcu storage adapter as future replacement for Apc
    • #63 Implemented ClearByNamespaceInterface in Stoage\Adapter\Redis
    • #94 adds factories for each of the PatternPluginManager, AdapterPluginManager, and storage PluginManager.
    • #94 exposes the package as a standalone config-provider / ZF component, by adding:
      • Zend\Cache\ConfigProvider, which enables the StorageCacheAbstractServiceFactory, and maps factories for all plugin managers.
      • Zend\Cache\Module, which does the same, for zend-mvc contexts.

    Deprecated

    • Nothing.

    Removed

    • Nothing.

    Fixed

    • #44 Filesystem: fixed race condition in method clearByTags
    • #59 XCache: fixed broken internalSetItem() with empty namespace
    • #58 XCache: Fatal error storing objects
    • #94 updates the PatternPluginManager to accept $options to get() and build(), cast them to a PatternOptions instance, and inject them into the generated plugin instance. This change allows better standalone usage of the plugin manager.
    • #94 updates the StorageCacheFactory and StorageCacheAbstractServiceFactory to seed the StorageFactory with the storage plugin manager and/or adapter plugin manager as pulled from the provided container, if present. This change enables re-use of pre-configured plugin managers (e.g., those seeded with custom plugins and/or adapters).
    Source code(tar.gz)
    Source code(zip)
  • release-2.6.1(Feb 12, 2016)

    Added

    • Nothing.

    Deprecated

    • Nothing.

    Removed

    • Nothing.

    Fixed

    • #73 fixes how the EventManager instance is lazy-instantiated in Zend\Cache\Storage\Adapter\AbstractAdapter::getEventManager(). In 2.6.0, it was using the v3-specific syntax; it now uses syntax compatible with both v2 and v3.
    Source code(tar.gz)
    Source code(zip)
  • release-2.6.0(Feb 11, 2016)

    Added

    • #70 adds, revises, and publishes the documentation to https://zendframework.github.io/zend-cache/

    Deprecated

    • Nothing.

    Removed

    • Nothing.

    Fixed

    • #22, #64, #68, and #69 update the component to be forwards-compatible with zend-eventmanager, zend-servicemanager, and zend-stdlib v3.
    • #31 Check Documentation Code Blocks
    • #53 fixed seg fault in redis adapter on PHP 7
    • #50 fixed APC tests not running on travis-ci since apcu-5 was released
    • #36 fixed AbstractAdapter::internalDecrementItems
    • #38 better test coverage of AbstractAdapter
    • #45 removed unused internal function Filesystem::readInfoFile
    • #25 MongoDd: fixed expiration support and removed duplicated tests
    • #40 Fixed TTL support of Redis::addItem
    • #18 Fixed Redis::getCapabilities and RedisResourceManager::getMajorVersion if resource wasn't initialized before
    Source code(tar.gz)
    Source code(zip)
Owner
Zend Framework
Zend Framework