gpt4 book ai didi

PHP 5.3.5 PDO FETCH_OBJ 内存泄漏?

转载 作者:可可西里 更新时间:2023-10-31 22:56:21 29 4
gpt4 key购买 nike

我目前正在开发一个使用 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 个问题..

  1. 在 PHP 5.3.5 中使用 PDO::FETCH_OBJ 时是否存在内存泄漏?
  2. 使用 FETCH_CLASS 与使用 FETCH_OBJ 之间有什么区别吗?
  3. 还有其他人遇到过同样的问题吗?

公司类很简单:

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 修复;我敢肯定,至少其中一些内容很有可能与您相关。

关于PHP 5.3.5 PDO FETCH_OBJ 内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14481499/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com