我可以用PHP连接mongodb吗?

时间:2012-04-25 03:05:00

标签: php mongodb

有没有办法连接mongodb并在任何地方使用它?如果我想使用mongodb,我必须详细输入$m= new Mongo;。我想知道重复连接是否会影响性能。

2 个答案:

答案 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实例,而是调用此函数,它将为您提供现有连接,而不是创建新连接。