據我所知,當一個對象的引用計數變爲0時,PHP的垃圾回收器負責銷燬對象。PHP:這段代碼會導致內存泄漏嗎?
我有一個用於數據庫連接的實用函數,其中創建一個PDO對象並將該對象返回給PDO操作的調用腳本。
因爲我已經將這段代碼遍佈在將要爲移動客戶端請求提供服務的web服務器腳本的地方,所以關鍵是我不會忽略細節,並在應用程序上線時發生內存泄漏。
你看到這裏有什麼問題嗎?
在connectDB.php:
function mySQLConnect() {
.....
.....
try
{
$dbh = new PDO($dsn, $user, $password, $options); // Ref Count=1
....
return $dbh;
}
catch (PDOException $e)
{
....
return NULL;
}
}
在PHP腳本:
include 'connectDB.php';
try
{
$dbh = mySQLConnect(); // Ref Count =2
....
....
} //Script Stops, Ref Count becomes 0 and memory is freed- or is it?
catch (Exception $e)
{
....
....
}
提前感謝!
會嗎?測試它! –
你很可能不需要擔心這一點。見http://blog.ircmaxell.com/2014/12/what-about-garbage.html – Machavity
什麼也漏。我們必須假設在您的代碼中將需要'$ dbh'。請記住,一旦腳本運行到結束,它就會被清除內存,它不會等待再次使用。 – RiggsFolly