当我使用 PHP 从资源(查询)中获取行时,我得到了一个非常奇怪、毫无意义且完全随机的错误。
我的开发机器是带有 Apache 2.2 的 Windows XP SP3,而 MySQL 在虚拟机上运行,使用 ubuntu 10.04,具有 768mb 内存、100GB 硬盘和 4 个逻辑内核(英特尔 q6600)。然而,这个问题与 Windows 上的 PHP 无关,因为我在数据库机器上运行代码时遇到了同样的错误。
我正在使用mysql
扩展名(不是mysqli
or mysqlnd
),但是环顾四周,我创建了一个关于这个与 mysqlnd 扩展名相关的错误的补丁,所以,我可能应该尝试一下。
主要问题是当我执行这个查询(一个非常大的查询,有几个派生表和超过 20 个连接)并快速处理结果并且一切顺利时,但是当我的代码花费大约 15/20 秒来处理一个块时行数(我需要从它们之间以非常特殊的方式链接的行块构建一个对象,我无法更改它,数据库不是我的,并从这个对象制作一些 PDF)一段时间后(随机时间)我收到此错误“空行数据包正文”。
我使用无缓冲查询来减少内存消耗(如果启用缓冲,我会得到大约 260MB 的已用内存),但这应该不是问题。