我正在使用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()?这将允许有效访问任意数量的行(数千,数百万)而不使用过多的内存.
在此先感谢您的任何建议.