2012-04-25 115 views
1

有什麼辦法連接mongodb並在任何地方使用它?當我想要使用mongodb時,我必須詳細輸入$m= new Mongo;。我想知道重複連接是否會影響性能。我可以使用PHP連接MongoDB嗎?

+0

那些14個字符肯定_are_詳細... – 2012-04-25 03:07:19

+0

@MДΓΓБДLL很好,我的關鍵點是性能問題如果重複連接不會影響性能爲什麼mysql_pconnect在mysql中保持連接還活着? – LotusH 2012-04-25 03:11:06

回答

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+)

創建連接是最重量級的事情之一是, 司機是否可以採取幾百毫秒即使在快速網絡上也能正確建立連接 因此,驅動程序嘗試 以最大限度地減少重新使用所創建的新連接的數量 來自泳池的連接。

當用戶創建Mongo的一個新實例時,所有必要的連接 將從其池中獲取(副本集可能需要多個連接,每個成員集有一個 連接)。當Mongo實例 超出範圍時,連接將返回到池中。當 PHP進程退出時,池中的所有連接都將被關閉。 「

這可以使用一個測試PHP腳本,並觀察mongostat地看到,形成最大連接嘗試。

+0

正是我想要的,謝謝! – LotusH 2012-04-25 06:19:38

1
private $m; 
private function getMongo() { 
    if ($this->m) return $this->m; 
    return $this->m = new Mongo(); 
} 

該技術被稱爲memoization。現在無處不在,通常會創建一個新的mongo實例,而是調用這個函數,它會給你現有的連接而不是創建一個新的連接。

+0

這不是單身嗎? – 2012-04-25 05:02:01

+0

不是單身人士會在Mongo類中存儲$ m,Mongo沒有公共構造函數 – 2012-04-25 13:38:11

相關問題