PHP недостаточно памяти при попытке получить результаты запроса sqlsrv в массив - PullRequest
0 голосов
/ 28 февраля 2020

Я выполняю простой запрос с драйвером 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)

Мне нужны данные в формате массива для дальнейшего использования. Есть ли более эффективный способ получить это? Я скучаю по somenthing?

Выполнение запроса с SSMS занимает 2 секунды, поэтому в нем нет ничего тяжелого.

PHP версия 7.0.23, если это может иметь значение.

1 Ответ

0 голосов
/ 05 марта 2020

Это звучит как проблема с ограничением памяти, я не могу воспроизвести это, но отредактируйте ваш INI-файл с помощью memory_limit = 256M или большего числа, чтобы увеличить допустимый объем памяти.

...