5

redis を使用する前に、可用性を確認したいと思います。redis が使用できない場合は mysql を使用し、redis が使用可能な場合はそれを使用します。predis クライアントを使用している場合、どうすればよいですか?

私の最初の方法は次のとおりです。

    /**
     * @return bool
     */
    public function check(){
        if(!@fsockopen ( $server['host'], $server['port'], $errno, $errstr, 3 )){
            Debug::instance()->log( 'Redis connect error host: ' . $server['host'] . ' port: ' . $server['port'] );
            return false;
        }

        return true;
    }

しかし、私は空いているソケットを占有していたので、それは非常に悪い考えでした. 今、私はより良い方法を見つけようとしています。

4

3 に答える 3

9

これでうまくいくはずです;)

// Redis configuration
$vm = array(
    'host'     => '127.0.0.1',
    'port'     => 6379,
    'timeout' => 0.8 // (expressed in seconds) used to connect to a Redis server after which an exception is thrown.
);

$redis = new Predis\Client($vm);
try {
    $redis->ping();
} catch (Exception $e) {
    // LOG that redis is down : $e->getMessage();
}
if(isset($e)) {
    //use MySQL
} else {
/* Use Redis */
}
于 2014-03-01T18:51:41.427 に答える