MongoDB PHP ReplicaSet правильный синтаксис - PullRequest
0 голосов
/ 20 сентября 2011

Я ищу правильный синтаксис для использования набора реплик. Я вижу документацию на странице PHP http://php.net/manual/en/mongo.construct.php, но я не совсем уверен, что будет дальше.

<?php

// pass a comma-separated list of server names to the constructor
$m1 = new Mongo("mongodb://sf2.example.com,ny1.example.com", array("replicaSet" => "myReplSet"));

// you only need to pass a single seed, the driver will derive the full list and
// find the master from this seed
$m2 = new Mongo("mongodb://ny1.example.com", array("replicaSet" => "myReplSet"));

?>

После этого я должен написать что-то вроде

if( $m1 ){ $mongo = $m1; }else{ $mongo = $m2; }

Это полное содержание моего существующего класса, которое я использую в codeigniter. Необходимо включить его для поддержки наборов реплик.

<?php  defined('BASEPATH') OR exit('No direct script access allowed');

class CI_Mongo extends Mongo
{
    var $db;

    function CI_Mongo()
    {   
        // Fetch CodeIgniter instance
        $ci = get_instance();
        // Load Mongo configuration file
        $ci->load->config('mongo');

        // Fetch Mongo server and database configuration
        $server = config_item('mongo_server');
        $dbname = config_item('mongo_dbname');

        // Initialise Mongo
        if ($server)
        {
            parent::__construct($server);
        }
        else
        {
            parent::__construct();
        }
        $this->db = $this->$dbname;
    }
} 
?>

1 Ответ

0 голосов
/ 20 сентября 2011

Нет, вы не поняли примеры в документе.Это два разных способа настройки набора реплик, и вы должны использовать только один из них.

В первом вы указываете несколько серверов, и Mongo обнаружит набор реплик на первом, к которому он сможет присоединиться.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...