[英]Anyway to do MongoDB Sharding in PHP?
我已经开始将MongoDB用于我的PHP项目之一。 在该数据库中,我尝试使用MongoDB分片概念。 我获得了以下链接并尝试过,
运行良好。 但是问题是,在上面的示例中,所有操作都在命令提示符下完成。 但是我正在尝试用PHP做所有事情。 我无法在PHP中获得任何示例。
到目前为止,我已经从这些代码开始,
$connection = new Mongo();
$db = $connection->selectDB('TestDB');
$db = $connection->TestDB;
$connection->selectDB('admin')->command(array('addshard'=>'host:port'));
$connection->selectDB('admin')->command(array('enablesharding'=>'TestDB'));
$connection->selectDB('admin')->command(array('shardcollection'=>'TestDB.large', 'key' => '_id'));
它不起作用。 另外,我不知道如何在PHP中设置分片服务器和配置数据库。
还有其他方法可以在PHP中进行MongoDB分片吗?
MongoDB的数据库命令区分大小写。 您传递的是小写的命令名称,而真实的命令是驼峰式的(请参阅: sharding命令 )。 另外, shardCollection
的key
参数必须是一个对象。
您的上述代码的更正版本如下所示:
$connection->selectDB('admin')->command(array('addShard'=>'host:port'));
$connection->selectDB('admin')->command(array('enableSharding'=>'TestDB'));
$connection->selectDB('admin')->command(array('shardCollection'=>'TestDB.large', 'key' => array('_id' => 1)));
此外,您应该能够检查的命令结果以确定为什么此命令不起作用。 ok
字段将为零,而errmsg
字段将说明该错误(例如“ no such cmd:Addshard”)。
最后,如果您试图模仿Shell的功能来配置PHP中的分片,您可能会意识到某些Shell方法不仅仅是数据库命令。 对于任何一种方法,都可以通过省略括号来获取JS源代码。 例如:
> sh.addTagRange
function ( ns, min, max, tag ) {
var config = db.getSisterDB( "config" );
config.tags.update( {_id: { ns : ns , min : min } } ,
{_id: { ns : ns , min : min }, ns : ns , min : min , max : max , tag : tag } ,
true );
sh._checkLastError( config );
}
对于PHP中的addTagRange()
函数需要做什么,这将是一个有用的提示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.