gpt4 book ai didi

php - 在 Zend Framework 中使用 mysql 无缓冲查询,是否支持?

转载 作者:可可西里 更新时间:2023-11-01 08:01:49 24 4
gpt4 key购买 nike

我需要运行一个查询来检索大量记录。
这意味着我不能为 mysqli 使用 ZF 包装器,它在底层使用 mysqli-store-result。那么,ZF 中是否有用于使用 mysqli mysqli-use-result link text 的包装器? ,它将返回一个 Iterator/record-set/resource 而不是所有结果已经加载到内存中的数组,或者我需要自己实现它吗?

最佳答案

首先,没有 Zend Framework 数据库适配器使用 ext/mysql .有 ext/mysqli 的适配器和 ext/pdo_mysql .

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

编辑:在 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 的内存限制。因此,您必须开始一个查询并编写一个循环来一次获取一行。

关于php - 在 Zend Framework 中使用 mysql 无缓冲查询,是否支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/566578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com