小编Jon*_*ett的帖子

使用具体的Zend_Db_Table_Abstract有效地遍历行集

我正在使用Zend_Db_Table_Abstract的具体实现:

class DB_TestClass extends Zend_Db_Table_Abstract {
    protected $_name = "test.TestData";
}
Run Code Online (Sandbox Code Playgroud)

如果我想要选择表中的所有行,我似乎有一个选项:

$t = new DB_TestClass;
$rowset = $t->fetchAll();
Run Code Online (Sandbox Code Playgroud)

这将返回Zend_Db_Table_Rowset的一个实例,该实例具有可循环的可迭代接口,并作为rowClass实例访问每个行条目:

foreach($rowset as $row) {
    var_dump($row);
}  
Run Code Online (Sandbox Code Playgroud)

但是,行集已经将数据库中的每一行加载到内存中(!)在小表上这没关系,但是在大型表 - 例如数千行 - 它很快耗尽了PHP可用的内存并且脚本死掉了.

我怎样才能使用Zend_Db迭代结果集,一次从语句句柄中检索一行,ala mysql_fetch_assoc()?这将允许有效访问任意数量的行(数千,数百万)而不使用过多的内存.

在此先感谢您的任何建议.

php zend-framework zend-db

6
推荐指数
1
解决办法
674
查看次数

标签 统计

php ×1

zend-db ×1

zend-framework ×1