PHP+FreeTDS+MSSQL - скорость работы/глюки

kvn

programmer
PHP+FreeTDS+MSSQL - скорость работы/глюки

Привет, уважаемые!

Как-то давно не заходил, но всех завсегдатаев помню! Особенно тех, кто "постарше" :)

Итак вопрос к практикам пользования некоего изврата.

Проект на MSSQL+ASP под виндой.
Есть необходимость (не спрашивайте почему) написать к нему некую веб-морду, которую очень хочется захостить на FreeBSD, соответственно и написать на php.
для коннекта с базой пользуется FreeTDS+какой-то модуль пыха (вроде сисбейз).

Все прекрасно работает и коннектиться.

Вопрос:
На сколько такой сетап глючный, и критичен к скорости работы?
Планируется, что веб морда будет достаточно нагруженной посещениями.
Т.е. вопрос к тем, кто подобное строил. На сколько это жизненно работает?
Или лучше не связываться, и писать на "родном" для базы asp-е? Очччень не хотелось бы...

Если не затруднит, поделитесь таким опытом, если он есть.
Благодарю.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Т.е. вопрос к тем, кто подобное строил. На сколько это жизненно работает?
У меня работает точно такая связка. Вполне быстро и стабильно. Есть пара мелких неприятных глюков (с кодировками, ага) - но в целом все прекрасно.
Но - сложных запросов у меня нет, титанических нагрузок тоже. Так, полсотни юзверей онлайн от силы.
 

zerkms

TDD infected
Команда форума
А что, по-твоему, в этой связке должно тормозить?
freetds?

я имею ввиду, почему связка .net-mssql тебя не смущает, а freetds-mssql - смущает?
 

kvn

programmer
Автор оригинала: zerkms
А что, по-твоему, в этой связке должно тормозить?
freetds?
я имею ввиду, почему связка .net-mssql тебя не смущает, а freetds-mssql - смущает?
Меня смущает недостаток опыта работы с такой системой.
Я не работал ранее с mssql из php, не работал с freetds.
Но работал с другими технологиями околопхпшными, и знаю, что одно дело "просто работает", другое - "нормально работает" в том числе с увеличением нагрузки.
Поэтому и спросил у тех, кто реально такое строил, т.к. вопрос не знаниях а в опыте и подводных камнях (хотя бы явных на данном этапе).

-~{}~ 18.05.10 17:18:

Автор оригинала: флоппик
У меня работает точно такая связка. Вполне быстро и стабильно. Есть пара мелких неприятных глюков (с кодировками, ага) - но в целом все прекрасно.
Но - сложных запросов у меня нет, титанических нагрузок тоже. Так, полсотни юзверей онлайн от силы.
Спасибо, уже что-то.
С кодировками вроде пока нормально, на тестах.

П.С. Осталось придумать как быть с сессиями и авторизацией asp.net membership..:mad:
 

440hz

php.ru
работает связка в магазине. фронт стоит freebsd+nginx+php-fpm на колоколе. в фирме стоит MSSQL за шлюзом по прокинутому порту.

Т.е. вебмодра таскает из локальной базы данные по магазину. Каталог 18000 товаров.

Все свистит.
 

fixxxer

К.О.
Партнер клуба
FreeTDS это нативная реализация протокола sybase/mssql - так что это самое быстрое решение, в любом случае быстрее чем промежуточный аппсервер.

Я прадва слышал о проблемах совместимости с mssql 2008 но может они уже решены.
 

kvn

programmer
Автор оригинала: fixxxer
FreeTDS это нативная реализация протокола sybase/mssql - так что это самое быстрое решение, в любом случае быстрее чем промежуточный аппсервер.

Я прадва слышал о проблемах совместимости с mssql 2008 но может они уже решены.
Спасибо.
Вроде работает нормально с 2008, там только в freetds.conf вроде параметр протокола указать явно нужно, не помню уже.
 

440hz

php.ru
Код:
hosting(root):/home/440hz#>cat /usr/local/etc/freetds.conf
#
#
#

[global]
        # TDS protocol version
        tds version = 8.0

        try server login = yes   у меня используется аутентификация на сервере
        try domain login = no   а не на домене
        cross domain login = no
        text size = 64512

        initial block size = 512

        swap broken dates = no
        swap broken money = no

#       dump file = /tmp/freetds.log
#       debug flags = 0xffff
#       dump file append = yes

        text size = 64512
#
#
#

[myhost]
       host = *****
       port = 14666
       tds version = 8.0
       client charset=CP1251

;
;
;
PHP:
$this->mssql = @mssql_connect('myhost','login','password');
 

kvn

programmer
440hz
Спасибо за рабочий конфиг.

Кто-то встречался с тем, что реально в базе поле
UserID вот такое:
AF7F2A9A-4434-46EE-B6C2-ED743FD58C00

А при print_r($row):
[UserId] => љ*Ї4DоF¶Внt?ХЊ

Ессно, потом использовать это UserId как параметр в php невозможно, т.к. он не совпадает с тем, что реальный.

При этом с кодировкой вроде как все пучком, т.е. русский текст нормально отображает.
 

fixxxer

К.О.
Партнер клуба
похоже на uuid в бинарном виде.

ну тут или что-то типа select cast(userid as varchar), либо ручками разбираться, как ему unpack.
 

Ярослав

Новичок
Приветствую.

Поделитесь опытом как получать ошибки от freetds при работе через PDO. PDOException не выкидываеться.
Работаю через доктрину.
Пока единственный способ получать ошибки это смотреть логи freetds. А это очень геморно.
Код из ObjectHydrator.php для примера
PHP:
while ($row = $this->_stmt->fetch(PDO::FETCH_ASSOC)) {  // <-- когда ошибка $row === false $this->_stmt->errorInfo() - есть описание ошибки. Но почему же PDOException не выкидываеться?
       $this->_hydrateRow($row, $cache, $result);
}
 

fixxxer

К.О.
Партнер клуба
По умолчанию и не должен. Выкидывание исключений включается каким-то то ли параметром конструктора, то ли отдельным сеттером, кури маны.
 
Сверху