PHP内存不足,试图将sqlsrv查询结果提取到数组中

问题描述 投票:0回答:1

我正在用sqlsrv驱动程序对PHP执行一个简单查询,返回104586行x 30列,如下所示:

$sql = 'SELECT [columns] FROM [table]'
$stmt = sqlsrv_query($conn, $sql, $params);

while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_NUMERIC)) {
    $dataSet[] = $row;
}

如果我回显所有的$row一切正常,并且页面加载在4-5秒钟内,但是如果尝试将它们分配给数组,则PHP耗尽内存错误,并在日志文件中显示以下消息:

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)

我需要数组格式的数据以便进一步使用。有没有更有效的方法来获得这一点?我想念东西吗?

使用SSMS执行查询需要2秒钟,因此其中没有太多内容。

如果这很重要,PHP版本是7.0.23。

php out-of-memory php-7 sqlsrv
1个回答
0
投票

这听起来像是内存限制问题,我无法重现此问题,但是请使用memory_limit = 256M或更大的数字编辑您的ini文件,以增加允许的内存大小。

© www.soinside.com 2019 - 2024. All rights reserved.