Predis - Catch connection error

Привет у меня есть следующее:

// 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>');
    }

However this isn't catching errors such as NOAUTH.

Может ли кто-нибудь указать мне правильное направление?

1 ответ

Я много читал об этой проблеме, и хотя моя конфигурация отличается, так как она использует несколько серверов, и проблема, которую я пытался решить, была неисправным сервером, похоже, это помогло мне:

 try {
      $client = new Predis\Client($params);
      $client->connect();
 } catch(Predis\Connection\ConnectionException $e) {
      echo $e->getMessage();
 }

Я попробовал много вариантов, и это, кажется, останавливает все крики из приложения. В моем случае я передал массив серверов и попытался пропинговать их и удалить сервер, который выходит из строя. Это кажется излишним, но как еще я узнаю, что сервер не работает без этого?

Кроме того, если вы не попытаетесь установить соединение, то оно не будет установлено где-то еще, то есть соединение будет ленивым и будет вызываться, когда оно действительно необходимо - для меня это всегда приводило к ошибке соединения. Позвонил сам перед тем, как его использовать, и я смог уловить исключение. Затем я должен был выяснить, почему Exception не будет работать, и должен был переключить его на Predis\Connection\ConnectionException. Это было намного сложнее, чем следовало.

Другие вопросы по тегам