据我所知,当一个对象的引用计数变为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