写这个博客主要是,MongoDB比较奇葩,至少我们这生产环境呢,有三种驱动:mongo(低于1.3.0)、mongo(高于1.3.0 MongoClient)以及mongodb。

ReadPreference这玩意儿不设置呢,集群模式会出现读写都在主片的情况,流量大了会很坑。而这个设置,只支持后两个,MongoClient以及mongodb。

下面直接给出示例代码,剩下的自己研究:

mongo(高于1.3.0 MongoClient)setReadPreference示例代码:

$server = new MongoClient();
$db = $server->selectDB($db_name);
$db->setReadPreference(MongoClient::RP_SECONDARY);

相关参考链接:
https://www.php.net/manual/en/mongodb.setreadpreference.php

mongodb(未测试)setReadPreference示例代码:

$server = new MongoDBDriverManager($mongodbUrl, $options);
$readPreference = new MongoDBDriverReadPreference(MongoDBDriverReadPreference::RP_SECONDARY_PREFERRED);
$query = new MongoDBDriverQuery($filter, $options);
$rows = $server->executeQuery("{$db}.{$col}", $query, $readPreference);

相关参考链接:
https://stackoverflow.com/questions/44063872/php-mongodb-driver-check-connection
https://www.php.net/manual/en/mongodb-driver-manager.executequery.php



Related Posts: PHP MongoDB MongoClient 驱动ReadPreference设置方式 :

留言