Credis_Cluster::setMasterClient PHP Method

setMasterClient() public method

public setMasterClient ( Credis_Client $masterClient, boolean $writeOnly = false ) : Credis_Cluster
$masterClient Credis_Client
$writeOnly boolean
return Credis_Cluster
    public function setMasterClient(Credis_Client $masterClient, $writeOnly = false)
    {
        if (!$masterClient instanceof Credis_Client) {
            throw new CredisException('Master client should be an instance of Credis_Client');
        }
        $this->masterClient = $masterClient;
        if (!isset($this->aliases['master'])) {
            $this->aliases['master'] = $masterClient;
        }
        if (!$writeOnly) {
            $this->clients[] = $this->masterClient;
            for ($replica = 0; $replica <= $this->replicas; $replica++) {
                $md5num = hexdec(substr(md5($this->masterClient->getHost() . ':' . $this->masterClient->getHost() . '-' . $replica), 0, 7));
                $this->ring[$md5num] = count($this->clients) - 1;
            }
            $this->nodes = array_keys($this->ring);
        }
        return $this;
    }

Usage Example

Exemplo n.º 1
0
 public function testSetMasterClient()
 {
     $this->tearDown();
     $master = new Credis_Client($this->config[0]['host'], $this->config[0]['port']);
     $slave = new Credis_Client($this->config[6]['host'], $this->config[6]['port']);
     $this->cluster = new Credis_Cluster(array($slave), 2, $this->useStandalone);
     $this->assertInstanceOf('Credis_Cluster', $this->cluster->setMasterClient($master));
     $this->assertCount(2, $this->cluster->clients());
     $this->assertEquals($this->config[6]['port'], $this->cluster->client(0)->getPort());
     $this->assertEquals($this->config[0]['port'], $this->cluster->client('master')->getPort());
     $this->cluster = new Credis_Cluster(array($this->config[0]), 2, $this->useStandalone);
     $this->assertInstanceOf('Credis_Cluster', $this->cluster->setMasterClient(new Credis_Client($this->config[1]['host'], $this->config[1]['port'])));
     $this->assertEquals($this->config[0]['port'], $this->cluster->client('master')->getPort());
     $this->cluster = new Credis_Cluster(array($slave), 2, $this->useStandalone);
     $this->assertInstanceOf('Credis_Cluster', $this->cluster->setMasterClient($master, true));
     $this->assertCount(1, $this->cluster->clients());
 }