setSlaveOkay is deprecated?


setSlaveOkay is deprecated?

我收到了这个错误信息:

已弃用:函数Mongo::setSlaveOkay()已弃用

在PHP手册中,它说:

MongoCollection: setSlaveOkay

(PECL mongo>=1.1.0)

MongoCollection::setSlaveOkay -更改此设置的slaveOkay收集

我找不到任何关于它被弃用的提及。

我的PHP版本是5.3.10,MongoDB版本是1.3.5.

正如其他答案所述,setSlaveOkay已被弃用,而支持完整的读取首选项(http://derickrethans.nl/readpreferences.html)。这是引入MongoClient类时所做的更改(http://derickrethans.nl/mongoclient.html)。

如果您查看PHP手册页(http://www.php.net/manual/en/mongocollection.setslaveokay.php)的底部,您将看到一个更改日志部分,其中提到:

使用时会发出E_DEPRECATED

下面的"See Also"部分提供了替代它的链接,阅读偏好。

作为备份Hannes (https://groups.google.com/forum/?fromgroups=#!topic/mongodb-user/CAWuND9niLo),其中一个维护者提到:

我们想让人们知道,首选的方式是……]将在即将到来的1.3.0版本中进行更改(计划"很快")。

是的,从现在开始你应该使用read preferences

'slaveOk'已被更可配置的ReadPreferences功能所取代。

下面是PHP ReadReferences的介绍:

MongoDB 2.2和1.3.0版本的驱动程序增加了对read的支持首选项,它允许控制如何将查询定向到复制集环境中的单实例。阅读偏好可能是在每个连接、每个数据库或每个集合上指定的基础上。在更高级别定义的首选项将被继承(例如,MongoCollection将继承在

读取首选项由模式和标签组合指定集。模式决定mongod实例的优先级,而标签集指定符合条件的单个实例的标准。

http://php.net/manual/en/mongo.readpreferences.php

HTH - Rob

这个函数的PHP变更日志

1.2.11在使用时抛出E_DEPRECATED