- 相關(guān)推薦
PHP 驅(qū)動 MongoDB 的技巧
在php中使用mongodb你必須使用 mongodb 的 php驅(qū)動。以下就是小編精心介紹PHP 驅(qū)動 MongoDB 的技巧,希望對大家有幫助!
當(dāng)與mongodb復(fù)制集建立連接時,驅(qū)動程序首先嘗試連接并驗(yàn)證集群中每個非 隱藏的節(jié)點(diǎn)。如果一個節(jié)點(diǎn)是“down”狀態(tài),將跳過。
創(chuàng)建索引有時會阻塞新的連接
然而,如果一個節(jié)點(diǎn)是“UP”狀態(tài),但是持有寫鎖,那么驗(yàn)證將沒法執(zhí)行下去,因此該驅(qū)動程序?qū)⒈粧炱鹆恕?/p>
在mongodb 2.6版本前,在建立索引時的通病。所有的在前臺或后臺創(chuàng)建索引,在secondary端將在前臺創(chuàng)建。
在PHP驅(qū)動程序的1.5.3版本會有所改進(jìn),在創(chuàng)建索引時,允許驗(yàn)證到second節(jié)點(diǎn)驗(yàn)證。
減少is_master_interval值
對于對可用性要求高的應(yīng)用程序來說,建議檢查默認(rèn)的驅(qū)動程序運(yùn)行時的配置設(shè)置。
mongo.is_master_interval選項(xiàng)控制著在復(fù)制集重新選舉時驅(qū)動如何快速恢復(fù)。
is_master_interval選項(xiàng)默認(rèn)值為15s,設(shè)置驅(qū)動發(fā)送“isMaster”請求每個mongod實(shí)例的時間間隔。這些請求幫助驅(qū)動程序判斷復(fù)制集的拓?fù)浣Y(jié)構(gòu),具體的來說,就是請求檢測哪個節(jié)點(diǎn)是primary并可以接收寫操作。
建議將該值設(shè)置為1或2秒,以讓驅(qū)動程序在集群選舉或故障轉(zhuǎn)移時,能夠迅速的定位到primary節(jié)點(diǎn)。當(dāng)然啦,這也取決于有多少客戶端以及ping的頻率。
注意,當(dāng)primary節(jié)點(diǎn)發(fā)生變化時,如選舉或故障轉(zhuǎn)移,總是會有幾秒鐘驅(qū)動程序會收到一個“MongoConnectionException” 信息 “No candidate servers found”。這些異常需要在你的代碼中進(jìn)行處理,否則會終止應(yīng)用程序。
理解連接處理方式并配置連接TimeoutMS
PHP驅(qū)動程序不使用連接池。因此,建議你每個PHP進(jìn)程創(chuàng)建一個連接。但是,如果web應(yīng)用程序有許多PHP工作進(jìn)程,將會創(chuàng)建很多新的數(shù)據(jù)庫連接,PHP驅(qū)動程序不能共享進(jìn)程之間的連接。因此,當(dāng)網(wǎng)絡(luò)節(jié)點(diǎn)慢,服務(wù)器繁忙時,PHP應(yīng)用程序創(chuàng)建初始數(shù)據(jù)庫連接時特別容易受到阻礙。
在這種情況下,建議你自定義connectionTimeoutMS 選項(xiàng)和注意php.ini中的mongo.ping_interval選項(xiàng)。
connectionTimeoutMS
PHP驅(qū)動程序不顯示的定義一個默認(rèn)的連接超時。相反,默認(rèn)值由php.ini文件中的default_socket_timeout選項(xiàng)決定,默認(rèn)是60秒。連接將等待60秒斷開,時間有些長,需要降低些。
強(qiáng)烈建議通過連接字符串的URI選項(xiàng)中顯示設(shè)置connectionTimeoutMS選項(xiàng)。將其設(shè)置為5到30秒之間的值。
mongo.ping_interval
mongo.ping_interval默認(rèn)值為5秒。該選項(xiàng)設(shè)置驅(qū)動程序發(fā)送ping請求到每個mongod實(shí)例發(fā)現(xiàn)“down”節(jié)點(diǎn)的時間間隔,用于跟蹤驅(qū)動程序的服務(wù)器黑名單。告訴驅(qū)動程序哪些節(jié)點(diǎn)忽略。
【PHP 驅(qū)動 MongoDB 的技巧】相關(guān)文章:
幾個php技巧11-07
PHP小技巧07-12
PHP學(xué)習(xí)路線以及PHP優(yōu)化技巧08-06
PHP開發(fā)的安全技巧10-14
PHP性能優(yōu)化技巧09-22
PHP代碼優(yōu)化技巧09-10
PHP常用開發(fā)技巧10-24
php的幾個小技巧09-07
PHP開發(fā)安全技巧08-10