Author: Coen Hyde
Inheritance: extends Mongo
Exemplo n.º 1
0
 /**
  * Add multiple connections at once using arrays of options
  * 
  * @param array $connectionOptions
  */
 public function addConnections($connectionOptions)
 {
     if ($connectionOptions instanceof Zend_Config) {
         $connectionOptions = $connectionOptions->toArray();
     }
     $masters = array();
     $masterStackOptions = array();
     $slaves = array();
     $slaveStackOptions = array();
     $group = $this;
     $addConnections = function (Shanty_Mongo_Connection_Stack $stack, array $connections) use($group) {
         foreach ($connections as $connectionData) {
             $options = array_intersect_key($connectionData, array_flip(Shanty_Mongo_Connection::getAvailableOptions()));
             $connection = new Shanty_Mongo_Connection($group->formatConnectionString($connectionData), $options);
             if (array_key_exists('weight', $connectionData)) {
                 $weight = (int) $connectionData['weight'];
             } else {
                 $weight = 1;
             }
             $stack->addNode($connection, $weight);
         }
     };
     // Lets add our masters
     if (array_key_exists('master', $connectionOptions)) {
         $masters[] = $connectionOptions['master'];
     } elseif (array_key_exists('masters', $connectionOptions)) {
         $connectionKeys = array_filter(array_keys($connectionOptions['masters']), 'is_numeric');
         $masters = array_intersect_key($connectionOptions['masters'], array_flip($connectionKeys));
         // only connections
         $masterStackOptions = array_diff_key($connectionOptions['masters'], array_flip($connectionKeys));
         // only options
     } else {
         $masters[] = $connectionOptions;
     }
     // one server
     $addConnections($this->getMasters(), $masters);
     // Add master connections
     $this->getMasters()->setOptions($masterStackOptions);
     // Set master stack options
     // Lets add our slaves
     if (array_key_exists('slave', $connectionOptions)) {
         $slaves[] = $connectionOptions['slave'];
     } elseif (array_key_exists('slaves', $connectionOptions)) {
         $connectionKeys = array_filter(array_keys($connectionOptions['slaves']), 'is_numeric');
         $slaves = array_intersect_key($connectionOptions['slaves'], array_flip($connectionKeys));
         // only connections
         $slaveStackOptions = array_diff_key($connectionOptions['slaves'], array_flip($connectionKeys));
         // only options
     }
     $addConnections($this->getSlaves(), $slaves);
     // Add slave connections
     $this->getSlaves()->setOptions($slaveStackOptions);
     // Set slave stack options
 }
Exemplo n.º 2
0
 /**
  * @depends testParseConnectionString
  */
 public function testGetHosts()
 {
     $connection = new Shanty_Mongo_Connection('mongodb://127.0.0.1:27017/shanty-mongo');
     $hosts = array(array('host' => '127.0.0.1', 'port' => 27017));
     $this->assertEquals($hosts, $connection->getHosts());
 }