对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
问题:
那么,这是否意味着驾驶员将在每次请求时
derive the full list
?或者他们会缓存它?如果他们缓存它,它会在故障转移期间引起问题吗?在降级为
secondary
时写入slave
- 当驱动程序出现写入错误时,它会刷新服务器列表并重试写入吗
回答您的问题:
1) PHP驱动程序和大多数MongoDB驱动程序一样,一旦获得连接信息,就会缓存它
2) 如果发生故障转移,前一个主节点将断开与所有客户端的所有连接。下次驱动程序尝试读取或写入套接字时,会出现错误。如果驱动程序在操作时无法重新连接到新的主节点,它将抛出PHP MongoConnectionException异常。
3) 由应用程序捕获此异常并在引发此异常时重试。
参考:http://php.net/manual/en/mongo.connecting.php