1

对 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. 如果他们缓存它,它会在故障转移期间引起问题吗?写到slave它被降级为secondary

  3. 驱动程序在遇到写入错误时会刷新服务器列表并重试写入吗?
4

1 回答 1

2

要回答您的问题:

1) PHP 驱动程序与大多数 MongoDB 驱动程序一样,一旦获得连接信息,就会对其进行缓存。

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

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

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

于 2012-08-28T20:11:31.933 回答