In the spirit of "chaos monkey" I'm trying to ensure that a laravel application keeps going even when the services it depends on are down.
It uses a DB for primary storage, and a redis cache. What I'd like to do is have it automatically fall back to the file cache if and when redis fails.
I haven't been able to find a clear example.
One way to solve this problem is to overwrite Laravel's default Illuminate\Cache\CacheManager
class and alter the ioc binding
class MyCacheManager extends Illuminate\Cache\CacheManager
{
protected function createRedisDriver(array $config)
{
try {
return parent::createRedisDriver($config);
} catch (\Exception $e) {
//Error with redis
//Maybe there is a more explicit exception ;)
return $this->resolve('file');
}
}
}
In some ServiceProvider
$this->app->singleton('cache', function($app)
{
return new MyCacheManager($app);
});
This solution will also keep the Cache
facade working :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With