有没有办法连接mongodb并在任何地方使用它?如果我想使用mongodb,我必须详细输入$m= new Mongo;
。我想知道重复连接是否会影响性能。
答案 0 :(得分:3)
这对MongoDb< 1.2,但之后持久连接是默认的。
MongoDb的所有语言驱动程序都在内部智能地管理连接池,因此您可以安全地使用默认行为。
由于连接池,无论何时创建new Mongo()
,它都会从连接池中选择已建立的连接,如果没有,则重新连接。
摘录自: http://php.net/manual/en/mongo.connecting.php
In 1.2.0+, connections are always persistent and managed
automatically by the driver.
“连接池(版本1.2.0 +)
创建连接是最重要的事情之一 司机呢。设置a可能需要数百毫秒 正确连接,即使在快速网络上也是如此。因此,司机尝试 最小化重用创建的新连接数 来自游泳池的连接。
当用户创建Mongo的新实例时,所有必要的连接 将从他们的池中取出(副本集可能需要多个 连接,每个成员一个)。当Mongo实例 超出范围,连接将返回到池中。什么时候 退出PHP进程后,池中的所有连接都将关闭。 “
您可以使用测试php脚本尝试此操作,并观察mongostat
以查看最终形成的连接。
答案 1 :(得分:1)
private $m;
private function getMongo() {
if ($this->m) return $this->m;
return $this->m = new Mongo();
}
该技术称为memoization
。现在,您通常会创建一个新的mongo实例,而是调用此函数,它将为您提供现有连接,而不是创建新连接。