W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
注意: 在 Unix 平臺上,MongoDB 驅(qū)動程序?qū)κ褂?fork() 系統(tǒng)調(diào)用,而不調(diào)用 exec()。建議用戶不要 在分叉中重用 MongoDB\Driver\Manager 實例 子進程。
自 1.2.0 以來的所有驅(qū)動程序版本都保留了 libmongoc 客戶端對象 PHP 工作進程,允許它重用數(shù)據(jù)庫連接, 身份驗證狀態(tài)和拓撲信息 多個請求。
當 MongoDB\Driver\Manager::__construct() 為 調(diào)用時,從其參數(shù)(即 URI 字符串和數(shù)組)創(chuàng)建哈希 選項)。驅(qū)動程序?qū)L試查找以前持久化的 ? libmongoc 客戶端對象 那個哈希。如果找不到哈希的現(xiàn)有客戶端,則新客戶端 將被創(chuàng)建并保留以備將來使用??梢越么诵袨?通過驅(qū)動程序選項。"disableClientPersistence"
每個客戶端都包含自己的數(shù)據(jù)庫連接和服務(wù)器視圖 拓撲(例如獨立、副本集、分片集群)。通過持久化 客戶端在PHP請求之間,驅(qū)動程序能夠復用已建立的 數(shù)據(jù)庫連接,并消除了對每個請求的“發(fā)現(xiàn)服務(wù)器拓撲”的需要。
請看以下示例:
<?php
$managers = [
new MongoDB\Driver\Manager('mongodb://127.0.0.1'),
new MongoDB\Driver\Manager('mongodb://127.0.0.1'),
new MongoDB\Driver\Manager('mongodb://127.0.0.1:27017'),
new MongoDB\Driver\Manager('mongodb://rs1.example.com,rs2.example.com/', ['replicaSet' => 'myReplicaSet']),
];
foreach ($managers as $manager) {
$manager->executeCommand('test', new MongoDB\Driver\Command(['ping' => 1]));
}
?>
前兩個 Manager 對象將共享相同的 libmongoc 客戶端,因為 它們的構(gòu)造函數(shù)參數(shù)是相同的。第三個和第四個對象將 每個都使用自己的客戶端??偣矊?chuàng)建三個客戶端,并且 執(zhí)行此腳本的 PHP 工作線程將打開兩個與 和 的連接,以及每個 和 的一個連接。 如果驅(qū)動程序在發(fā)出命令后發(fā)現(xiàn)副本集的其他成員,它將打開與 那些服務(wù)器也是如此。127.0.0.1rs1.example.comrs2.example.comhello
如果同一個工作線程在第二個請求中再次執(zhí)行腳本,則三個 客戶端將被重用,并且不會建立新的連接。根據(jù) 上一個請求是多久前送達的,驅(qū)動程序可能需要發(fā)出 用于更新其視圖的其他命令 拓撲。hello
1.2.0 之前的 PHP 驅(qū)動程序版本使用 PHP 的 Streams API 數(shù)據(jù)庫連接,使用 ? libmongoc 中的 API 指定 用于套接字通信的自定義處理程序;但是,新的 libmongoc 客戶端是 為每個 MongoDB\Driver\Manager 創(chuàng)建。因此, 驅(qū)動程序保留單個數(shù)據(jù)庫連接,但不保留身份驗證 狀態(tài)或拓撲信息。這意味著驅(qū)動程序需要發(fā)出 每個請求開頭的命令,用于驗證和 ? 發(fā)現(xiàn)服務(wù)器拓撲。
數(shù)據(jù)庫連接由派生自服務(wù)器的哈希值持久化 host、port 和用于構(gòu)造 MongoDB\Driver\Manager 的 URI 字符串。構(gòu)造函數(shù)的數(shù)組 選項不包含在此哈希中。
注意: 驅(qū)動程序 >= 1.1.8 和 < 1.2.0 的版本不會保留套接字 用于 SSL 連接。參見 ? PHPC-720 其他信息。
盡管它在持久SSL連接和拓撲結(jié)構(gòu)方面存在缺點 信息,此版本的驅(qū)動程序支持所有 SSL 上下文選項,因為它使用 PHP 的 Streams API。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: