PHP 5.3.5 PDO FETCH_OBJ内存泄漏?
发布时间:2020-12-13 17:22:57 所属栏目:PHP教程 来源:网络整理
导读:我目前正在开发一个使用PDO的 PHP应用程序.我正在写一个导入文件,它读入一个CSV文件,检查数据库中的记录,以及更新,删除等等…. 我注意到的是这个脚本使用的内存似乎非常高,似乎可能与我执行查询的方式有关.请参阅下面的示例查询,该查询是针对CSV中的每一行执
我目前正在开发一个使用PDO的
PHP应用程序.我正在写一个导入文件,它读入一个CSV文件,检查数据库中的记录,以及更新,删除等等….
我注意到的是这个脚本使用的内存似乎非常高,似乎可能与我执行查询的方式有关.请参阅下面的示例查询,该查询是针对CSV中的每一行执行的: $qry = "SELECT * FROM company WHERE id = 1"; $sth = $this->prepare($qry); $sth->execute(); $sth->setFetchMode(PDO::FETCH_INTO,new Company()); $sth->fetch(); 对于上面的memory_get_peak_usage()= 6291456 使用以下时: $qry = "SELECT * FROM company WHERE id = 1"; $sth = $this->prepare($qry); $sth->execute(); $sth->setFetchMode(PDO::FETCH_CLASS,"Company"); $sth->fetch(); 对于上面的memory_get_peak_usage()= 524288 你可以看到差异相当大. 我想我有3个问题.. >在PHP 5.3.5中使用PDO :: FETCH_OBJ时是否存在内存泄漏? 公司类很简单: class Company { function __construct(){} /**classvars**/ public $_tablename = 'company'; public $transient; public $id; public $name; /**endclassvars**/ } 解决方法
看看
PHP changelog,似乎在5.3.4中有一个相关的修正,其中一个是
memory leak was fixed in PDO
FETCH_INTO .
从你所说的,我怀疑是的,这是你看到的错误.当然,解决方案是升级 – 坚持使用旧的补丁版本毫无意义. 即使这不是您所看到的错误,在5.3.3和现在之间的版本中已经有大量的PDO修复;我敢肯定,至少其中一些与你相关的机会很大. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |