Mam następujący skrypt PHP, który w zasadzie łączy się z MongoDB, pisze dokument, a następnie zamyka połączenie 19000 razy:Co dzieje się, gdy połączenia z MongoDB nie są zamknięte?
<?php
for($i=0; $i < 19000; $i++) {
$con = new Mongo("mongodb://localhost:27017");
$db = $con->selectDB('test');
$col = $db->selectCollection('close_wait_test');
$col->insert(array('Test' => 'Value1'));
$con->close();
}
?>
Uruchomienie tego skryptu raz działa dobrze, ale jeśli uruchomić skrypt kilka sekund później Otrzymuję wyjątek "Nie mogę przypisać żądanego adresu", co jest zrozumiałe, ponieważ prawdopodobnie w systemie serwera zabrakło portów.
Jeśli jednak usunę $ CON> close(); Mogę uruchamiać ten skrypt w kółko bez wyraźnego obciążenia bazy danych. Zakładam, że dzieje się tak dlatego, że połączenie z bazą danych jest trwałe i używa tego samego początkowego połączenia w skrypcie.
Co chciałbym wiedzieć, to czy 20k + inni użytkownicy uruchomili 1 pętlę tego skryptu w tym samym czasie, co stałoby się z bazą danych? na przykład czy dostępne połączenia po prostu się wyczerpią, ponieważ każdy użytkownik musi utworzyć jedno połączenie z bazą danych? lub czy wszyscy ci użytkownicy będą korzystali z tego samego połączenia początkowego stworzonego przez pierwszego użytkownika?
Dzięki za wyjaśnienie! –