Nota: Em plataformas Unix, a extensão é sensível a scripts que usam a chamada de sistema fork() sem chamar também exec(). Os usuários são aconselhados a não reusar instâncias de MongoDB\Driver\Manager em um processo filho bifurcado.
Todas as versões da extensão desde 1.2.0 persistem o objeto cliente » libmongoc no processo de trabalho do PHP, o que permite reutilizar conexões de banco de dados, autenticação de estados, e informações de topologia em diversas solicitações.
    Quando MongoDB\Driver\Manager::__construct() é
    invocado, um hash é criado a partir de seus argumentos (ou seja, string URI e
    opções de array). A extensão tentará encontrar um objeto cliente
    » libmongoc anteriormente persistente para
    esse hash. Se um cliente existente não puder ser encontrado para o hash, um novo cliente
    será criado e persistido para uso futuro. Este comportamento pode ser desabilitado
    através da opção do driver "disableClientPersistence".
   
Cada cliente contém suas próprias conexões de banco de dados e uma visão da topologia do servidor (por exemplo, standalone, replica set, shard cluster). Ao persistir o cliente entre solicitações PHP, a extensão é capaz de reutilizar conexões de banco de dados estabelecidas e eliminar a necessidade de » descobrir a topologia do servidor em cada solicitação.
Considere o seguinte exemplo:
<?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]));
}
?>
    Os dois primeiros objetos Manager compartilharão o mesmo
    cliente » libmongoc, pois
    seus argumentos construtores são idênticos. O terceiro e o quarto objetos usarão
    cada um seu próprio cliente. No total, três clientes serão criados e o
    worker PHP que executa este script abrirá duas conexões para
    127.0.0.1 e uma conexão para cada um de
    rs1.example.com e rs2.example.com.
    Se a extensão descobrir membros adicionais do conjunto de réplicas após
    emitir comandos hello, ela também abrirá conexões adicionais
    com esses servidores.
   
    Se o mesmo worker executar o script novamente em uma segunda solicitação, os três
    clientes serão reutilizados e nenhuma nova conexão será feita. Dependendo de há
    quanto tempo a solicitação anterior foi atendida, a extensão pode precisar
    emitir comandos hello adicionais para atualizar sua visualização das
    topologias.
   
Versões da extensão anteriores a 1.2.0 utilizam a API de Fluxos do PHP para conexões de banco de dados, usando uma API dentro de » libmongoc para designar manipuladores personalizados para comunicação de socket; entretanto, um novo cliente libmongoc é criado para cada MongoDB\Driver\Manager. Como resultado, a extensão persiste em conexões de banco de dados individuais, mas não no estado de autenticação ou nas informações de topologia. Isso significa que a extensão precisa emitir comandos no início de cada solicitação para autenticar e » descobrir a topologia do servidor.
As conexões de banco de dados são persistidas por um hash derivado do host do servidor, da porta e da string URI usada para construir o MongoDB\Driver\Manager. As opções de array do construtor n ão estão incluídas neste hash.
Nota: Versões da extensão >= 1.1.8 e < 1.2.0 não persiste sockets para conexões SSL. Consulte » PHPC-720 para obter informações adicionais.
Apesar de suas deficiências com conexões SSL persistentes e informações de topologia, esta versão da extensão suporta todas as opções de contexto SSL, uma vez que usa a API de Fluxos do PHP.
