我有以下的PHP腳本基本上連接到MongoDB的,寫一個文檔,然後關閉連接19000次:與MongoDB的連接沒有關閉時會發生什麼?
<?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();
}
?>
運行此腳本一次工作正常,但如果我幾秒鐘後運行該腳本,我得到'無法分配請求的地址'異常,這是可以理解的,因爲服務器系統可能用完了端口。
但是,如果我刪除$ con> close();我可以反覆運行該腳本,而不會對數據庫造成任何明顯的壓力。我假設這是因爲連接到數據庫是持久的,並重復使用腳本上的相同初始連接。
我想知道的是,如果20k +不同的用戶同時運行這個腳本的1個循環,那麼數據庫會發生什麼?例如可用連接是否會因爲每個用戶需要創建一個到數據庫的連接而用完?或者是否所有這些用戶都使用第一個用戶創建的相同初始連接?
感謝您的解釋! – 2012-04-16 14:19:42