当前位置: 首页 > 面试题库 >

PHP PDO缓冲查询问题

罗安和
2023-03-14
问题内容

我在使用PHP数据对象功能时遇到了一些严重问题。我试图使用缓冲查询循环遍历一个较大的结果集(〜60k行,〜1gig),以避免获取整个结果集。

不管我做什么,脚本都只是挂在PDO :: query()上-看来查询正在无缓冲运行(为什么结果集大小的更改会“解决”问题?)。这是我的代码来重现该问题:

<?php
$Database = new PDO(
    'mysql:host=localhost;port=3306;dbname=mydatabase',
    'root',
    '',
    array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true
    )
);

$rQuery = $Database->query('SELECT id FROM mytable');

// This is never reached because the result set is too large
echo 'Made it through.';

foreach($rQuery as $aRow) {
    print_r($aRow);
}
?>

如果我将查询限制在一个合理的数字范围内,则可以正常运行:

$rQuery = $Database->query('SELECT id FROM mytable LIMIT 10');

我尝试过使用PDO :: MYSQL_ATTR_MAX_BUFFER_SIZE并使用PDO :: prepare()和PDO ::
execute()(尽管上面的查询中没有参数),但都无济于事。任何帮助,将不胜感激。


问题答案:

如果我理解这一权利,则缓冲查询涉及告诉PHP您要在开始处理之前等待整个结果集。在PDO之前,这是默认设置,mysql_unbuffered_query如果您想立即处理结果,则必须致电。

我不知道为什么PDO MySQL驱动程序页面上没有对此进行解释。



 类似资料:
  • 缓冲区查询 缓冲区查询,即在数据服务中的指定数据集集合中查找符合缓冲区的矢量要素,并在客户端中展示出来。 以 World 数据服务为例。使用接口 ol.supermap.FeatureService 在数据集 “World:Capitals” 中查找符合此缓冲区范围距离为10度(地图坐标单位)的矢量要素。 //指定矩形范围查询处理 var polygon = new ol.geom.Polygon

  • 问题内容: 简单的说,我总是对PHP / MySQL缓冲查询和非缓冲查询之间的区别是,缓冲(默认)将所有数据加载到结果集变量中, 然后 您可以开始使用它们,而无缓冲则在以下位置加载行:一个时间。 假设您先运行然后进行了,它将包含所有行和补充信息,例如行数。因此,如果您在100MB的数据库上执行此操作,那么如果那里没有索引,则可能会占用约100MB的空间)。 但是,我遇到了这样的SO溢出问题,其中一

  • 10.3. 缓冲节点查询 kgp.py 使用了多种技巧,对你进行 XML 处理而言它们或许有用。第一个就是,使用输入文档的结构稳定特征来构建节点缓冲。 一个语法文件定义了一系列的 ref 元素。每个 ref 包含了一个或者多个 p 元素,p 元素可以包含很多不同的东西,包括 xref。无论何时你遇到一个 xref ,都可以通过相同的 id 属性找到相对应的 ref 元素,并选择 ref 元素的子元

  • 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 查询缓存存储SELECT查询的文本以及发送给客户端的相应结果。如果随后收到一个相同的查询,服务器从查询缓存中重新得到查询结果,而不再需要解析和执行查询。 如果你有一个不经常改变的表并且服务器收到该表的大量相同查询,查询缓存在这样的应用环境中十

  • 本文向大家介绍php如何执行非缓冲查询API,包括了php如何执行非缓冲查询API的使用技巧和注意事项,需要的朋友参考一下 对于PHP的缓冲模式查询大家都知道,下面列举的例子是如何执行非缓冲查询API。 非缓冲查询方法一: mysqli 非缓冲查询方法二: pdo_mysql 非缓冲查询方法三: mysql 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 好的,我有一个频率发生器,它使用AudioTrack将PCM数据发送到硬件。这是我正在使用的代码: 频率与滑动条相关,并且在样品生成循环中报告了正确的值。当我启动应用程序时,一切都很好。当您沿着滑动条拖动手指时,您会听到清晰的声音。但是经过大约10秒钟的播放之后,音频开始变得跳动。它不是平滑的扫描,而是交错的,并且仅在大约每1000 Hz左右更改音调。关于什么可能导致此的任何想法? 如