mathieu-bour / laravel-cache-fallback
Allow Laravel cache connections to fallback to more stable drivers.
Installs: 33 824
Dependents: 0
Suggesters: 0
Security: 0
Stars: 14
Watchers: 2
Forks: 2
Open Issues: 3
Requires
- php: ^7.1.3 || ^8.0
- illuminate/cache: 5.8.* || ^6.0 || ^7.0 || ^8.0
- illuminate/config: 5.8.* || ^6.0 || ^7.0 || ^8.0
- illuminate/support: 5.8.* || ^6.0 || ^7.0 || ^8.0
Requires (Dev)
- illuminate/redis: 5.8.* || ^6.0 || ^7.0 || ^8.0
- laravel/framework: 5.8.* || ^6.0 || ^7.0 || ^8.0
- laravel/lumen-framework: 5.8.* || ^6.0 || ^7.0 || ^8.0
- mathieu-bour/coding-standard: ^1.0
- mathieu-bour/hydra: ^0.1
- mockery/mockery: ^1.3
- phpunit/phpunit: ^7.0 || ^8.0 || ^9.0
- predis/predis: ^1.1
- symfony/var-dumper: ^4.0 || ^5.2
This package is auto-updated.
Last update: 2022-07-29 02:19:10 UTC
README
Allow Laravel cache connections to fallback to more stable drivers.
This package is especially useful when you want your application to be fault-tolerant. For example, when using a Redis instance as cache store, you may want to be able to fallback to file store if the Redis instance is unavailable.
This package follows the Semantic Versioning specification.
Acknowledgements
This package was inspired by fingo/laravel-cache-fallback, even if it is not maintained anymore.
Prerequisites
- PHP >= 7.1.3
- Laravel/Lumen 5.8, 6.x, 7.x or 8.x
Supported cache methods
This package support most of the cache methods (e.g. get, put, etc.). The tagged cache is not supported at the moment.
Compatibility Matrix
This package was tested against the following matrix:
Laravel/Lumen | PHP 7.1 | PHP 7.2 | PHP 7.3 | PHP 7.4 | PHP 8.0 |
---|---|---|---|---|---|
5.8 | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
6.0 | ❌ | ✔️ | ✔️ | ✔️ | ❌ |
7.0 | ❌ | ✔️ | ✔️ | ✔️ | ❌ |
8.0 | ❌ | ❌ | ✔️ | ✔️ | ✔️ |
Installation
Simply add mathieu-bour/laravel-cache-fallback
to your package dependencies.
composer require mathieu-bour/laravel-cache-fallback
This package does not publish any resource and its configuration directly handled in the config/cache.php
file.
Laravel
This package uses Laravel Package Discovery, so you do need to do anything more.
If you have disabled this feature, you can register the service provider in the config/app.php
.
Lumen
Register the service provider in the bootstrap/app.php
file like so:
$app->register(Windy\CacheFallback\CacheFallbackServiceProvider::class);
Usage
Each cache store can now have a fallback
key in its configuration.
If during execution, the cache driver throws an exception, the fallback driver will be used instead.
<?php return [ 'default' => env('CACHE_DRIVER', 'file'), 'stores' => [ 'file' => [ 'driver' => 'file', 'path' => storage_path('framework/cache/data'), ], 'redis' => [ 'driver' => 'redis', 'connection' => env('CACHE_REDIS_CONNECTION', 'cache'), 'fallback' => 'file', ], ], ];
In this example, the redis
store fallbacks to file
.
If there is no fallback
defined, the original exception will be raised as usual.
Note that this package does not provide any way to cycle through stores: if A fallbacks to B and B fallbacks to A, B will throw the exception immediately.