PHP MongoClient连接到Mongodb副本集,关于连接字符串

时间:2016-09-08 05:33:13

标签: php mongodb mongodb-replica-set

删除主节点后,与MongoDB副本集的PHP连接失败。

我已经构建了一个包含五个节点的mongodb副本集; mongo1是主要的,其他都是次要的。

这是我的连接代码:

$dbmongo_name = "myDatabase";
$dbmongo_conn_str = "mongodb://myusername:mypassword@mongo1.mysite.net:27017,mongo2.mysite.net@27017,mongo3.mysite.net@27017,mongo4.mysite.net@27017,mongo5.mysite.net@27017";
$dbmongo_conn_options = array("db" => $dbmongo_name, "replicaSet" => "rs1", "readPreference" => "secondaryPreferred", "connectTimeoutMS" => 5000);

class DB_Mongo {
   global $dbmongo_conn_str, $dbmongo_conn_options;
   public $connection;

   function __construct() {
        $this->connection = new MongoClient($dbmongo_conn_str, $dbmongo_conn_options);

    }
}

我发现每当我停止连接字符串中的第一个服务器的服务时(在这个时候,它是mongo1),php驱动程序将抛出连接异常错误或者不会抛出任何错误但是&# 34;连接"连接对象的属性为false。

似乎php驱动程序无法正常连接到副本集。

我尝试了另一个实验,交换服务器的位置。这次我的连接字符串是:

$dbmongo_conn_str = "mongodb://myusername:mypassword@mongo3.mysite.net:27017,mongo2.mysite.net@27017,mongo1.mysite.net@27017,mongo4.mysite.net@27017,mongo5.mysite.net@27017";

在这种情况下,mongo1仍然是主要的;当我停止mongo3服务时,错误再次发生。只要我不停止列表中第一台服务器的服务,似乎一切都会好的。

0 个答案:

没有答案