对副本集执行PHP mongodb驱动程序检查';它的主人应每一个要求


Do PHP mongodb driver check for replica set's master on every request

对mongodb的复制集的典型PHP调用

$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

问题:

  1. 那么,这是否意味着驾驶员将在每次请求时derive the full list?或者他们会缓存它?

  2. 如果他们缓存它,它会在故障转移期间引起问题吗?在降级为secondary 时写入slave

  3. 当驱动程序出现写入错误时,它会刷新服务器列表并重试写入吗

回答您的问题:

1) PHP驱动程序和大多数MongoDB驱动程序一样,一旦获得连接信息,就会缓存它

2) 如果发生故障转移,前一个主节点将断开与所有客户端的所有连接。下次驱动程序尝试读取或写入套接字时,会出现错误。如果驱动程序在操作时无法重新连接到新的主节点,它将抛出PHP MongoConnectionException异常。

3) 由应用程序捕获此异常并在引发此异常时重试。

参考:http://php.net/manual/en/mongo.connecting.php