有什么办法连接mongodb并在任何地方使用它?当我想要使用mongodb时,我必须详细输入$m= new Mongo;
。我想知道重复连接是否会影响性能。我可以使用PHP连接MongoDB吗?
回答
这对于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+)
创建连接是最重量级的事情之一是, 司机是否可以采取几百毫秒即使在快速网络上也能正确建立连接 因此,驱动程序尝试 以最大限度地减少重新使用所创建的新连接的数量 来自泳池的连接。
当用户创建Mongo的一个新实例时,所有必要的连接 将从其池中获取(副本集可能需要多个连接,每个成员集有一个 连接)。当Mongo实例 超出范围时,连接将返回到池中。当 PHP进程退出时,池中的所有连接都将被关闭。 “
这可以使用一个测试PHP脚本,并观察mongostat
地看到,形成最大连接尝试。
正是我想要的,谢谢! – LotusH 2012-04-25 06:19:38
private $m;
private function getMongo() {
if ($this->m) return $this->m;
return $this->m = new Mongo();
}
该技术被称为memoization
。现在无处不在,通常会创建一个新的mongo实例,而是调用这个函数,它会给你现有的连接而不是创建一个新的连接。
这不是单身吗? – 2012-04-25 05:02:01
不是单身人士会在Mongo类中存储$ m,Mongo没有公共构造函数 – 2012-04-25 13:38:11
那些14个字符肯定_are_详细... – 2012-04-25 03:07:19
@MДΓΓБДLL很好,我的关键点是性能问题如果重复连接不会影响性能为什么mysql_pconnect在mysql中保持连接还活着? – LotusH 2012-04-25 03:11:06