【问题标题】:Symfony SncRedis Bundle exception handling if redis not available如果 redis 不可用,Symfony SncRedis Bundle 异常处理
【发布时间】:2013-10-24 17:54:51
【问题描述】:

我使用 redis 作为缓存来帮助提高应用程序在生成成本高的数据方面的性能。目前我们只有一个 redis 实例正在运行,我观察到如果 redis 不可用 - 则返回 500 错误。

鉴于我正在缓存 - 如果 redis 已关闭,我宁愿继续处理并在省略数据的情况下呈现该页面。

我已经使用基本的 php try - catch 块进行了测试 - 但我无法捕获异常。

public function redisAction()
{
  try {
    $redis = $this->container->get('snc_redis.default');
    $val = $redis->get('foo:bar');
  } catch (Exception $e ) {
    $response = new Response('Oops ');
    return $response;
  }
 ....
}

我可以采取其他方法吗?我也在调查 sncredis 捆绑包,看看是否可以在那里解决。

【问题讨论】:

    标签: php exception symfony redis bundle


    【解决方案1】:

    假设你没有在你的类顶部包含use Exception,你需要添加一个前导反斜杠......否则PHP将尝试捕获不存在的Your\Current\Namespace\Exception

    catch (\Exception $e ) {
        // ...
    }
    

    但是我不确定redis在请求的key不存在的情况下是否会抛出异常(其实我不这么认为)。

    您可以使用exists() 方法来检查密钥是否存在。

    if ($redis->exists("foo:bar")) {
        return new Response('Oops');
    }
    

    【讨论】:

    • 谢谢 - 添加使用异常解决了这个问题。
    猜你喜欢
    • 2011-04-03
    • 2021-04-27
    • 2019-10-02
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多