Вопрос такой. Есть необходимость получать большие данные в PHP(5.3.3) из mssql.
На mssql сервере создана (не мной и не все подробности до конца известны, но можно запросить) хранимая процедура, приблизительно такого вида:
CREATE PROCEDURE <Имя процедуры>
@ID int
,@TimeStart datetime
,@TimeEnd datetime
,@Param varchar(200)
,@Language_Name varchar(30)
,@IsShow bit = 0
* * * * черный для меня ящик * * * *
Возможно мне не сообщили, но у этой процедуры есть и OUTPUT параметры.
Основная для меня проблема состоит в том, что процедура может возвращать очень много данных. У PHP заканчивается память и все "финализируется".
Самое неприятное что заканчивается память во время этого вызова, что для меня странно:
$result = mssql_query($query, $conn);
Т.е. до него памяти 2Мб используется, а во время этого вызова вылетаем из перерасхода в 512Мб. (Очень не хотелось бы ставить -1 для лимита памяти в php)
Вот на какой вопрос я хотел попросить помочь ответить тех кто с этим знаком или имеет какие-то соображения на этот счет.
Правильно ли я понимаю процесс? Вызов mssql_query отправляет query на Microsoft SQL сервере, запускается на выполнение процедура с указанным названием, выполняются SQL инструкции и попутно заполняются OUTPUT переменные. А мне сообщается идентификатор ресурса с помощью которого я могу вытащить (mssql_fetch_array) данные уже к себе?
Возможно считываются какие-то данные из OUTPUT переменных уже при вызове mssql_query, а они уже большие и в память не влазят?
Как все это разбирает PHP и может ли это быть связано с OUTPUT переменными?
Пробовал получать данные с помощью PDO. Такая-же проблема, но уже при вызове
$stmt->execute();