Прежде всего, ни один адаптер базы данных Zend Framework не использует ext / mysql . Существуют адаптеры для ext / mysqli и ext / pdo_mysql .
В адаптере MySQLi он всегда вызывает mysqli_store_result()
(см. Zend / Db / Statement / Mysqli.php, около строки 250), что означает, что он поддерживает только буферизованный запрос Результаты. Zend Framework в настоящее время не поддерживает какие-либо опции, чтобы изменить это, поэтому вы можете попробовать отредактировать эту строку кода самостоятельно, используя mysqli_use_result()
.
edit: В адаптере PDO_MySQL по умолчанию используется буферизованных запросов.
Исходный код PHP 5.4.6, файл ext / pdo_mysql / mysql_driver.c, строка 590, в функции pdo_mysql_handle_factory ():
H->buffered = H->emulate_prepare = 1;
Обратите внимание, что независимо от использования небуферизованных запросов, если вы вызовете fetchAll()
для класса-обертки базы данных, вы получите все строки вашего огромного набора результатов и, вероятно, превысите лимит памяти PHP. Поэтому вместо этого вы должны начать запрос и написать цикл для выборки строк по одной за раз.