所以我最近继承了一大堆php代码,它不是最优的,这里是主要的问题:
我的任务是配置一个复制集群,并在从设备上进行负载平衡读取。我把'setSlaveOkay(true)'代码放在包装器类中,理想情况下应该是所有需要的...但是在代码的很多地方直接访问'mongo'和其他类将没有正确的slaveOkay值集。糟糕的代码会出现在很多地方,以至于无法进入并修复每一次事件。
理想情况下,我正在寻找的是:
据我所知,这里的人们非常倾向于提供“正确方式”的解决方案,但在这种情况下,建议如“升级到最新的mongo并使用读取首选项”或“创建包装类...... “没用。我继承了代码,我继承了mongo的安装。我需要一个快速而肮脏的修复程序,不会破坏现有的项目...进入代码并更改'mongo'类的500次调用以使用包装器不是一个选项 - 它将引入太多潜在的错误代码 - 并且也无法保证团队中的其他编码人员不会绕过包装类。
感谢您的时间。
答案 0 :(得分:1)
您可以更新到最新的PHP驱动程序并使用读取首选项。这与服务器端无关,除非您使用分片,在这种情况下,您需要MongoDB 2.4+附带的mongos
。但是,如果您不使用分片,则不需要2.4群集,因为在客户端处理读取首选项。
我猜你在某处配置了你的连接字符串?如果是这种情况,你可以添加?readPreference = secondaryPrefered。