Php 在Zend框架中使用mysql_无缓冲_查询,是否支持?

Php 在Zend框架中使用mysql_无缓冲_查询,是否支持?,php,mysql,zend-framework,Php,Mysql,Zend Framework,我需要运行一个将检索大量记录的查询。 这意味着我不能为mysqli使用ZF包装器,它在引擎盖的深处使用mysqli存储结果。 那么,ZF中是否有用于使用mysqli mysqli use result的包装器,它将返回一个迭代器/记录集/资源,而不是所有结果都已加载到内存中的数组,或者我需要自己实现它 首先,没有Zend Framework数据库适配器使用。有用于和的适配器 在MySQLi适配器中,它总是调用(请参见第250行附近的Zend/Db/Statement/MySQLi.php),这意

我需要运行一个将检索大量记录的查询。
这意味着我不能为mysqli使用ZF包装器,它在引擎盖的深处使用mysqli存储结果。
那么,ZF中是否有用于使用mysqli mysqli use result的包装器,它将返回一个迭代器/记录集/资源,而不是所有结果都已加载到内存中的数组,或者我需要自己实现它

首先,没有Zend Framework数据库适配器使用。有用于和的适配器

在MySQLi适配器中,它总是调用(请参见第250行附近的Zend/Db/Statement/MySQLi.php),这意味着它只支持缓冲的查询结果。Zend Framework目前不支持任何更改此项的选项,因此您可以尝试自己编辑该行代码以使用
mysqli\u use\u result()

编辑:在PDO_MySQL适配器中,默认使用缓冲查询

PHP 5.4.6源代码,文件ext/pdo_mysql/mysql_driver.c,第590行,在函数pdo_mysql_handle_factory()中:


请注意,无论使用无缓冲查询,如果在数据库包装类上调用
fetchAll()
,都将获取庞大结果集的所有行,并且可能会超过PHP的内存限制。因此,您必须开始一个查询并编写一个循环来一次获取一行。

为什么不能使用ZF包装器?我不能在返回之前将整个集合读取到内存中。这将导致进程由于内存不足而崩溃(我在这里说的是数百万条记录)。我将使用一个ZF包装器,我将从mysqli包装器扩展它
H->buffered = H->emulate_prepare = 1;