Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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 Mongodb ReadReference辅助系统不工作?_Php_Mongodb_Mongodb Php - Fatal编程技术网

Php Mongodb ReadReference辅助系统不工作?

Php Mongodb ReadReference辅助系统不工作?,php,mongodb,mongodb-php,Php,Mongodb,Mongodb Php,我使用2个节点mongodb1、mongodb2和1个仲裁器mongodb3设置mongodb副本集。我使用php脚本连接到复制集 <?php $conn = new MongoClient("mongodb://admin:123456@mongodb1:27017,mongodb2:27017/?replicaSet=MyRepSet&readPreference=secondary"); $conn->setReadPreference(MongoClient::

我使用2个节点mongodb1、mongodb2和1个仲裁器mongodb3设置mongodb副本集。我使用php脚本连接到复制集

<?php
 $conn = new MongoClient("mongodb://admin:123456@mongodb1:27017,mongodb2:27017/?replicaSet=MyRepSet&readPreference=secondary");
  $conn->setReadPreference(MongoClient::RP_SECONDARY, array());

  MongoCursor::$slaveOkay = true;

  $db = $conn->test;
  $collection = $db->items;
  var_dump($collection->findOne());

  $conn->close();
?>

假设mongodb1是主要的,mongodb2是次要的。我想要的是,对于读取操作,客户端必须首先连接到mongodb2,如果mongodb2关闭,则可以选择连接到mongodb1

但事实是,当我发现mongolog文件时,我看到客户端的所有操作都是连接到mongodb1(主),而不是我想要的辅助


我错在这里了

没有,您的代码是正确的

不需要:MongoCursor::$slaveook=true

你能给我们一份你的日志摘要吗?
在我的示例中,我看到2个节点上的连接已被接受,但查询很好地发送到辅助节点。

在使用命令tail-f查看日志文件并捕获以下行之前,我再次进行了检查:

[initandlisten] connection accepted from IP:PORT #253 (3 connections now open)
我看到这一行插入到
primary
日志文件中,所以我猜客户端连接到primary

现在,我使用
mongostat
命令,可以看到辅助上的
query
语句和主上的
insert
语句

太棒了

谢谢