意外地使用单个PDO查询来触发PHP内存限制?
|
我有一个非常简单的查询,看起来像: $result = $pdo->query('SELECT * FROM my_table');
foreach($result as $r) {
// do some stuff
}
但是当我运行这个我得到以下错误:
“第15行”是$pdo->查询行. 如果我在查询后放置了die(),我仍然会收到相同的错误. 我以为这只是在一时间拿到一排;为什么会使用这么多的内存?
丁丁丁! 当连接到MySQL时,PHP喜欢使用buffered queries.这是真的,无论你使用什么方法来连接.当使用缓冲查询时,当您询问时,整个结果集将立即获取,而不是被提取.这通常对于性能很好,因为往返次数较少. 但是像PHP中的所有东西一样,还有一个问题.如缓冲页面所述:
你正在使用PHP 5.3,这意味着你很有可能使用mysqlnd. 您将要关闭缓存的查询.在MySQL的每个PHP接口中都有所不同: >对于PDO,您需要将PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性设置为false. 详细信息和示例在页面上. 大肥胖无缓冲查询 您必须正确关闭语句句柄并释放结果集才能发出另一个查询: >在PDO中,这意味着在语句句柄上调用 否则将导致错误. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
