Download the PHP package shieldon/simple-cache without Composer
On this page you can find all versions of the php package shieldon/simple-cache. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download shieldon/simple-cache
More information about shieldon/simple-cache
Files in shieldon/simple-cache
Package simple-cache
Short Description PSR-16 simple cache drivers for PHP.
License MIT
Homepage https://github.com/terrylinooo/simple-cache
Informations about the package simple-cache
PSR-16 Simple Cache
GitHub Action | Travis CI | Scrutinizer CI | Code Coverage | Code Quality |
---|---|---|---|---|
Caching, a common performance-boosting technique, is a staple feature in many frameworks and libraries. This interoperability allows libraries to utilize existing caching implementations rather than creating their own. PSR-6 has addressed this issue, but its formal and verbose nature complicates simple use cases. PSR-16 is a simpler approach seeks to create a streamlined standard interface for common situations, ensuring compatibility with PSR-6 in a straightforward manner.
Showcase
Simple Cache is utilized in Cache Master, a WordPress Cache Plugin, and it performs excellently. Check it out if you're running WordPress sites; it won't let you down.
Built-in drivers:
The required parameters are marked by an asterisk (*)
Driver name | ($driver) |
PHP modules | ($config) |
---|---|---|---|
File | file |
- | *storage |
Redis | redis |
redis | host , port , user , pass , unix_socket |
MongoDB | mongo |
mongodb | host , port , user , pass , dbname , collection , unix_socket |
MySQL | mysql |
pdo_mysql | host , port , *user , *pass , *dbname , table , charset |
SQLite | sqlite |
pdo_sqlite | *storage |
APC | apc |
apc | - |
APCu | apcu |
apcu | - |
Memcache | memcache |
memcache | host , port , unix_socket |
LibMemcached | memcached |
memcached | host , port , unix_socket |
WinCache | wincache |
wincache | - |
Note:
- WinCache is excluded from unit testing since it's only used on Windows, and the testing processes are done on Linux environment.
unix_socket
is empty by default, accepting the absolute path of the unix domain socket file. If it is set,host
andport
will be ignored.
The following command displays a list of installed PHP modules.
Before using, make sure the required PHP modules are installed on your system.
Table of Contents
- Install
- Usage
- Cache
- Built-in drivers
- __construct
- $driver
- $config
- Cache
- API
- set
- get
- has
- delete
- getMultiple
- setMultiple
- deleteMultiple
- clear
- clearExpiredItems
(Non-PSR-16)
- Build Data Schema
- MySQL
- SQLite
- Garbage Collection
- Author
- License
Install
Usage
Cache
Class Cache
is an adapter that not only allows the implemented instance of Psr\SimpleCache\CacheInterface
, but also has built-in drivers already.
__construct($driver = ''
, $config = []
)
Create a cache handler using the file driver.
Example:
$driver
(string|CacheInterface)
The class name of a built-in driver, or a PSR-16 driver that implements Psr\SimpleCache\CacheInterface
.
$config
(array)
An array of parameters will be passed to a built-in driver.
Example:
Redis
File
Mysql
Sqlite
Mongo
Memcache, Memcached
API
Those API methods are defined on Psr\SimpleCache\CacheInterface
. Please check out the PSR-16 document to get the detailed explanation.
- set
- get
- has
- delete
- setMultiple
- getMultiple
- deleteMultiple
- clear
- clearExpiredItems (Non-PSR-16)
set
Note that $ttl accepts null
,int
,DateInterval
.
The null
means that the key never expires until deleted.
Example:
get
Example:
has
Example:
delete
Example:
setMultiple
Note that $ttl accepts null
,int
,DateInterval
.
The null
means that the key never expires until deleted.
Example:
getMultiple
Example:
deleteMultiple
Example:
clear
Example:
clearExpiredItems Non-PSR-16
This method returns a list of deleted cache keys.
Note: Redis and Memcache, Memcached drivers will always return an empty array. See Garbage Collection section below.
Example:
Build Data Schema
The data schema needs to be built for the initial use of MySQL and SQLite drivers.
This API can be utilized for this purpose.
Or build it manually.
MySQL
SQLite
Garbage Collection
For built-in drivers, enabling garbage collection will automatically clear expired cache from your system.
Use the following parameters:
This implies a 1% probability of executing garbage collection. Avoid setting it to 100% as it will unnecessarily fetch and check all keys one by one.
Example:
You can just use the gc_enable
to enable garbage collection.
Note
For the Redis, Memcache, and Memcached drivers, this method isn't necessary as expired items are automatically cleared.
Contributing
Thank you for your interest in contributing to our project! We welcome contributions from everyone. Before getting started, please take a moment to review the guidelines below:
Guidelines
- Fork the repository and create your branch from master.
- Make sure your code follows our coding style and conventions.
- Keep your code concise, well-documented, and modular.
- Write clear commit messages that describe the purpose of your changes.
- Test your changes thoroughly to ensure they don't introduce any new issues.
- Make sure your code builds successfully without any errors or warnings.
- Update relevant documentation, including README files if necessary.
- Submit a pull request (PR) to the master branch of the original repository.
Code Testing
We utilize a Docker image that includes various dependencies for our code testing. The image is based on /tests/Fixture/docker/Dockerfile
and is preconfigured with the following components:
- Redis
- MongoDB
- MySQL
- PHP
- Memcached
- APCu
Follow the steps below to run the tests:
- Make sure you have Docker installed on your machine. If not, you can download and install it from the official Docker website.
-
Navigate to the project directory and build the Docker image by running the following command:
-
Once the Docker image is built, you can run the tests by executing the following command:
- Observe the test results and make note of any failures or errors. The output will be displayed in the terminal.
Author
The Origin of this Library
This PHP library was created for the 12th Ironman Game competition, hosted by ITHelp, a Taiwanese IT community. My chosen topic was "Road to PHP Master - The Best Practice in Open Source Code", composed in traditional Chinese. You can read it here if you're interested.
License
MIT