Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MongoClient连接到Mongodb副本集,关于连接字符串_Php_Mongodb_Mongodb Replica Set - Fatal编程技术网

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

PHP MongoClient连接到Mongodb副本集,关于连接字符串,php,mongodb,mongodb-replica-set,Php,Mongodb,Mongodb Replica Set,删除主节点后,到MongoDB副本集的PHP连接失败 我构建了一个包含五个节点的mongodb副本集;mongo1是主要的,其他的都是次要的 这是我的连接代码: $dbmongo_name=“myDatabase”; $Dmongo_conn_str=”mongodb://myusername:mypassword@mongo1.mysite.net:27017,mongo2.mysite。net@27017,mongo3.mysite。net@27017,mongo4.mysite。net@2

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

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

这是我的连接代码:

$dbmongo_name=“myDatabase”;
$Dmongo_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);
类DB_Mongo{
全球$dbmongo_conn_str,$dbmongo_conn_options;
公共连接;
函数_u构造(){
$this->connection=newmongoclient($dbmongo\u conn\u str,$dbmongo\u conn\u options);
}
}
我发现,每当我停止连接字符串中第一个服务器的服务时(这次是mongo1),php驱动程序要么抛出连接异常错误,要么不抛出任何错误,但connection对象的“connected”属性将为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服务时,错误再次发生。似乎只要我不停止列表中第一台服务器的服务,一切都会好起来。

您有没有任何故意不在连接字符串末尾添加的原因?我已尝试在连接字符串末尾添加replicaset标志,结果没有差别。您是否有任何故意不在连接字符串末尾添加的原因?我已尝试在连接字符串末尾添加replicaset标志,结果没有差别。