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