Download the PHP package ifixit/matryoshka without Composer
On this page you can find all versions of the php package ifixit/matryoshka. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download ifixit/matryoshka
More information about ifixit/matryoshka
Files in ifixit/matryoshka
Package matryoshka
Short Description PHP Caching Library
License MIT
Homepage https://github.com/iFixit/Matryoshka
Informations about the package matryoshka
Matryoshka
Matryoshka is a caching library for PHP built around nesting components like Russian nesting dolls.
Motivation
The Memcached PHP client libraries offer fairly low level access to memcached servers.
Matryoshka adds convenience functions to simplify common operations that aren't covered by the client libraries.
Most of the functionality is provided by nesting Backend
s.
For example, prefixing cache keys is accomplished by nesting an existing Backend
within a Prefix
backend.
This philosophy results in very modular components that are easy to swap in and out and simplify testing.
This concept is used to support key prefixing, disabling get
s/set
s/delete
s, defining cache fallbacks in a hierarchy, storing values in clearable scope, and recording statistics.
Backends
APCu
Caches values in a shared memory segment (available to all processes under a webserver) using the APCu php extension.
Ephemeral
Caches values in a local memory array that lasts the duration of the PHP process.
Enable
A wrapper around a cache that allows disabling get
, set
, or delete
operations.
When an action is disabled the underlying backend is not modified nor accessed and false
is returned.
ExpirationChange
Modifies all expiration times using a callback for the new value. This allows things like randomizing or scaling expiration times to decrease miss storms or improve hit ratios.
KeyFix
Fixes troublesome keys by shortening longer ones to less than or equal the specified length, and getting rid of any specified, invalid characters.
It accomplishes this by using md5
to hash offending keys into an alphanumeric string of uniform length.
KeyShorten
Ensures that all keys are at most the specified length by shortening longer ones.
Long keys are shortend by using md5
on the end of the string
to ensure long strings with a common prefix don't map to the same key.
Either this or KeyFix should be used, not both. KeyFix handles long keys and bad characters, making this an unnecessary addition.
Prefix
Prefixes all keys with a string.
Stats
Records counts and timings for operations to be used for metrics.
Hierarchy
Sets caches in a hierarchy to prefer faster caches that get filled in by slower caches.
Note: This Backend is currently experimental due to some of its potentially unexpected behavior.
Local
Caches all values from the specified backend in a local array so subsequent requests for the same key can be fulfilled faster.
It's a faster version of:
Scope
Caches values in a scope that can be deleted to invalidate all cache entries under the scope.
MultiScope
Uses multiple scopes to store keys. Stores the scope or scopes in one backend and the scoped values in another. This primarily allows storing a scope in a shared but slower-to-acccess backend (for easy deletion), while storing the values in a local and faster backend for speedy access.
Convenience Functions
getAndSet
Wrapper for get()
and set()
that uses a read-through callback to generate missed values.
getAndSetMultiple
Wrapper around getMultiple()
that uses a callback to generate values in batch to populate the cache.
License
The MIT License (MIT)
Copyright (c) 2014 iFixit
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the Software), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.