嗨,我有以下内容:
// Named array of connection parameters:
$redis = new Predis\Client([
'scheme' => 'tcp',
'host' => $host,
'port' => $port,
'password' => $auth,
]);
try {
// explicitly call Predis\Client::connect()
$redis->connect();
}
catch (Exception $e) {
return Redirect::to('profile')
->with('result', '<div class="col-lg-12"><div class="alert alert-danger alert-border-left alert-gradient alert-dismissable">
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
<i class="fa fa-check pr10"></i>
<strong>Error - '.$e.'</strong> Unable to connect to redis server, please double check your database detals.</div></div>');
}但是,这并不能捕获NOAUTH之类的错误。
有人能给我指个方向吗?
发布于 2015-03-12 03:24:56
我广泛地阅读了这个问题,虽然我的配置是不同的,因为它使用了多个服务器,并且我试图解决的问题是一个失败的服务器,但这似乎已经为我解决了:
try {
$client = new Predis\Client($params);
$client->connect();
} catch(Predis\Connection\ConnectionException $e) {
echo $e->getMessage();
}我尝试了许多变体,这似乎阻止了应用程序的所有尖叫。在我的示例中,我传入了一个服务器数组,并尝试ping它们并删除出现故障的服务器。这看起来有点过头了,但是如果不这样做,我怎么知道服务器是否关闭了呢?
此外,如果您不尝试连接,那么它将在其他地方失败,也就是说,连接是惰性的,并且将在实际需要时被调用--对我来说,这总是导致连接错误。在使用它之前我自己调用它,这样我就可以捕捉到异常。然后,我必须找出Exception不起作用的原因,并必须将其切换到Predis\Connection\ConnectionException。这比预期的要难得多。
https://stackoverflow.com/questions/28394489
复制相似问题