【发布时间】:2013-05-04 04:19:26
【问题描述】:
我有一个用于管理其数据库获取的应用程序的类。我不想使用类中的结果集 (PDOStatement) 并从那里回显 html,而是想使用 fetchAll() 将结果集返回到页面
return $stmt->fetchAll(PDO::FETCH_ASSOC);
编辑:我不想返回$stmt,因为据我所知,单个连接中存在多个现有PDOStatement 对象并不好。为了避免风险,我想在类中管理这些对象。如果我错了,请纠正我。
假设数组不会超过 100k 行,可能是 10k-50k,是否有任何性能原因(或任何原因)为什么我不应该这样做?我知道这是非常基本的,但是处理这个的首选方法是什么?
如果我这样做而不是在类方法中直接使用它,它会对内存产生任何影响吗?我认为没关系,但我想听听 SO。
【问题讨论】:
-
处理大型数组会对内存产生很大影响,为什么不返回 $stmt 并一次提取一行
-
定义你的函数,让它接受一个目标参数,像这样:
function getData( $parm1, $parm2, &$dest_var );然后像这样调用它:$my_data = NULL; getData( 'parm1', 'parm2', $my_data );在您的 fetch 函数中,您不会返回一个大数组,而是将其分配给传递的参数,这可能更节省内存。 -
@MarkBaker 几个页面元素可能会使用这个数据类对象,我不想冒在类之外有多个 PDOStatement 对象的风险。如果已经有一个光标未到达末尾,则创建一个将失败。所以我想让它们在类方法的范围内进行管理。
-
@J.D.Pace 聪明的想法 :) 如果没有别的,我可能会尝试。谢谢。
标签: php function memory-management return resultset