Здравствуйте, форумчане.
Спасайте!
1 Вопрос
Конфигурация сервера №1:
Windows Server 2008 R2 + IIS 7.5 + PHP (5.2.17, 5.3.6, 5.3.7RC1)(FastCGI) + MSSQL 2008 R2
Сервер нулёвый(сразу после установки хостером) без мусора, только обновления.
Установлены все последние обновления на 22.06.2011
Параметры соединения:
CODE ( text):
скопировать код в буфер обмена
//$host = '127.0.0.1'; //$host = 'localhost'; //$host = '(local)\SQLEXPRESS'; $host = '.\SQLEXPRESS'; $bd = 'database'; $rootlogin = 'login'; $rootpass = 'pass';
Параметры FreeTDS:
Всегда использовал драйвер доступа к MSSQL 2005, 2008(без R2) FreeTDS 8.2 отсюда http://docs[dot]moodle[dot]org/20/en/Ins[dot][dot][dot]ng_MSSQL_for_PHP
Всегда драйвер работал быстро и без нареканий почти. Последняя удачная конфигурация (№2) была и есть:
Windows Server 2008 + IIS 7.0 + PHP 5.3.6(FastCGI) + MSSQL 2008 + FreeTDS_8.2_NTS_VC9
Проблема: на конф.№2 функция mssql_connect работала за доли миллисекунд, а в конф. №1 происходит резкое замедление до всегда почти одинаковой цифры 4.5-4.9 секунд, что не приемлемо естественно. Пробовал использовать драйвер SQLSRV 2.0(от Майкрософта), соединение происходит за 0.0001-0.01 сек., что относительно неплохо. Так что грешить на загрузку системы в целом не приходится, да и нет этой загрузки.
Вопрос: Что именно на это может влиять? Был ли у кого такой косяк и как с ним справились?
2 Вопрос
С горяча уже начал пробовать пути к отступлению.
Когда пробовал использовать драйвер SQLSRV 2.0(от Майкрософта), то наткнулся на один плохой пункт. При использовании FreeTDS mssql_query выполнял и получал результаты запроса:
с использованием одного вызова mssql_next_result, т.е.:
то при использовании SQLSRV приходится использовать последовательность:
т.к. появляется affected_rows и их можно получить с помощью sqlsrv_num_rows, НО если конструкция гораздо сложнее, т.е. есть курсоры и используется T-SQL и к тому же громадный проект, то возникает вопрос:
Каким образом можно убрать подобные вещи или свести их к случаю как в старой библиотеке?
Были попытки использовать опцию MultipleActiveResultSets в sqlsrv_connect, но это ни к чему не привело.
Я находил такой ответ:
использовать перед каждым запросом
Но при этом невозможно получить sqlsrv_num_rows для 2ой и далее выборки(SELECT), что не допустимо.
Спасибо за то, что хотя бы прочитали до конца.
|