Поврзувања
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Поврзувања
Референца за `mongodb.connection-handling.php` со подобрена типографија и навигација.
Ракување со конекција и перзистентност
Забелешка: На Unix платформи, екстензијата е чувствителна на скрипти што ја користат системскиот повик fork() без истовремено да го повикаат exec(). Корисниците се советуваат да не повторно користат MongoDB\Driver\Manager инстанци во форкиран процес на дете.
Перзистентност на конекција и топологија (PHP верзија од 1.2.0)
Сите верзии на екстензијата од 1.2.0 ја перзистираат Фрлено кога драјверот ќе наиде на грешка во време на извршување (на пр. внатрешна грешка од објектот клиент во PHP работниот процес, што му овозможува повторно да користи бази на податоци, состојби на автентикација, and информации за топологијата низ повеќе барања.
Кога Секое пишување или барање може да фрли исклучоци за поврзување бидејќи врските се создаваат мрзливо. MongoDB сервер може исто така да стане недостапен за време на животниот век на скриптата. Затоа е важно сите дејства на Менаџерот да бидат завиткани во try/catch изјави. се повикува, се креира хеш од неговите аргументи (т.е. URI стринг и опции од низа). Екстензијата ќе се обиде да најде претходно перзистиран
Фрлено кога драјверот ќе наиде на грешка во време на извршување (на пр. внатрешна грешка од објект клиент за тој хеш. Ако не може да се најде постоечки клиент за хешот, ќе се креира нов клиент и ќе се перзистира за идна употреба. Ова однесување може да се оневозможи преку "disableClientPersistence" опцијата драјвер.
Секој клиент содржи свои конекции до базата на податоци и поглед на топологијата на серверот (на пр. самостоен, сет на реплики, кластер на парчиња). Со перзистирање на клиентот помеѓу PHP барањата, екстензијата е во состојба повторно да ги користи воспоставените конекции до базата на податоци и да ја отстрани потребата за » откривање на топологијата на серверот на секое барање.
Разгледајте го следниот пример:
<?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 ќе го споделат истиот
Фрлено кога драјверот ќе наиде на грешка во време на извршување (на пр. внатрешна грешка од клиент бидејќи нивните аргументи на конструкторот се идентични. Третиот и четвртиот објект ќе користат свој клиент. Вкупно, ќе бидат креирани три клиенти и PHP работникот што го извршува ова скрипта ќе отвори две конекции до
127.0.0.1 и една конекција до секој од
rs1.example.com and rs2.example.com. Ако екстензијата открие дополнителни членови на сетот на реплики по издавањето hello команди, таа ќе отвори дополнителни конекции и до тие сервери.
Ако истиот работник го изврши скриптот повторно во второ барање, трите клиенти ќе се повторно искористат и нема да се направат нови врски. Во зависност од тоа колку време поминало од претходното барање, екстензијата можеби ќе треба да издаде дополнителни hello Ако истиот работник го изврши скриптот повторно во второ барање, трите клиенти ќе се повторно користат и нема да се направат нови конекции. Во зависност од тоа колку време поминало од претходното барање, екстензијата можеби ќе треба да издаде дополнителни
команди за да го ажурира својот приказ на топологиите.
Перзистентност на сокети (PHP верзии пред 1.2.0) Фрлено кога драјверот ќе наиде на грешка во време на извршување (на пр. внатрешна грешка од Верзиите на екстензијата пред 1.2.0 ја користат PHP Streams API за конекции до базата на податоци, користејќи API во MongoDB\Driver\Managerза да назначи прилагодени ракувачи за комуникација преку сокети; сепак, нов libmongoc клиент се создава за секој . Како резултат на тоа, екстензијата ги задржува индивидуалните конекции до базата на податоци, но не и состојбата на автентикација или информациите за топологијата. Ова значи дека екстензијата треба да издава команди на почетокот на секое барање за автентикација и.
» откривање на серверската топологија MongoDB\Driver\ManagerКонекциите до базата на податоци се задржуваат со хеш изведен од домаќинот на серверот, портот и URI низата што се користи за конструирање на
Забелешка: . Опциите во низата на конструкторот не се вклучени во овој хеш. Верзиите на екстензијата >= 1.1.8 и < 1.2.0 не задржуваат сокети за SSL конекции. Види за дополнителни информации.
» PHPC-720 SSL опции за контекст И покрај неговите недостатоци со задржување на SSL конекции кога и информации за топологијата, оваа верзија на екстензијата поддржува сите