AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.03.2015, 12:13   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
? Возможно ли кешировать COM соединения в PHP ?
Привет всем.
Коллеги, нужен совет.

Ситуация :
Сотрудники склада, при подготовке товара к отгрузке, делают отборку товара, информацию по отгрузочным накладным получают в переносных терминалах сбора данных (по сути, защищенные от жестких физических воздействий Pocket PC устройства с встроенным сканнером штрихкодов, в которых крутился браузер IE через который и происходит обмен информацией с Аксаптой)
В IE отображаются странички с сайта ( написанного лет 7 назад людьми которые уже давно не работают )
Сайт написан на JavaScript+PHP, крутится под Apache. В PHP инициализируется COM Connector Аксапты и идет получение и отправка данных.

Все было нормально, но с определенного момента периодически идут подвисания.
Сам сайт представляет из себя набор маленьких простых страничек, помещающихся на небольшом экране переносного устройства. По мере выполнения действий пользователем (выбор товара для отборки по штрихкоду, простановка отобранного количества, возврат к перечню строчек, снова выбор товара, снова простановка количества, завершение отборки) - постоянно идет переход между страничками и каждый переход сопровождается обращением в Аксапту (в PHP создается com объект аксапты, выполняется logonAS, устанавливается нужная компания и дергаются методы аксапты)
В общем, как удалось установить, подвисает выполнение логина в Аксапту – лочится табличка SysClientSessions (к ней идет порядка 10 обращений в секунду). Изменить такое поведение в Аксапте мы не можем. Судя по всему COM Connector не проектировался для частого логина.
Естественно возникает желание, как-то передавать инициализированный COM объект между разными PHP скриптами или иметь пул таких объектов на уровне апача и использовать их, не делая каждый раз New Com(…) и не вызывая тормозящий logonAS.

1. Возможно ли такое сделать в PHP ?

2. Если невозможно, то как проще было бы сделать, не переписывая весь сайт ? (пока думаю задействовать вебсервис аксапты, вместо использования Comconnector) . По идее, IIS, под которым он крутится, должен внутри себя держать пул соединений, обрабатывая обращения без подвисаний)
– т.е. как быстро сделать фикс который позволит ускорить работу ?

3. Если говорить о дальней перспективе (года через 2 возможно перейдем на 2012-ю Аксапту), то как правильнее было бы построить такой сайт ? (т.е. если рассматривать полную переделку то куда двигаться ?)

Число активно работающих терминалов на складах – около 70.
Средняя создаваемая нагрузка – 10 обращений в секунду. (10 раз выполняется logonAs)
Версия 2009, build 1500.4570 (Rollup 7 )

Последний раз редактировалось Logger; 12.03.2015 в 12:19.
Старый 12.03.2015, 12:48   #2  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
По поводу 3 пункта есть различные солюшены типа RF smart или dynamics anywhere logistic и им подобные так же в r3 уже есть в коробке правда не знаю насколько оно работоспособное https://technet.microsoft.com/EN-US/.../dn553159.aspx

Последний раз редактировалось skuull; 12.03.2015 в 12:55.
За это сообщение автора поблагодарили: Logger (5).
Старый 12.03.2015, 13:13   #3  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Dynamics Anywhere был хорош во времена 4.0 и 2009. Костылей и "особенностей реализации" что в функционале что в архитектуре конечно хватало, но (после доработки напильником) работало и 15-20 конкурентных пользователей держало стабильно. Если есть планы перехода на 2012 (R3 или что на тот момент будет доступно), есть смысл наверное смотреть сразу на родной мобильный портал
__________________
-ТСЯ или -ТЬСЯ ?
Старый 12.03.2015, 14:22   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
спс за ответ.

Цитата:
Сообщение от Vadik Посмотреть сообщение
Dynamics Anywhere был хорош во времена 4.0 и 2009. Костылей и "особенностей реализации" что в функционале что в архитектуре конечно хватало, но (после доработки напильником) работало и 15-20 конкурентных пользователей держало стабильно.
У нас раза в 4 больше
По п.2 можете что-нить порекомендовать ? Не хочется все переколбашивать и делать масштабные переписывания. Тем более что непонятно, сколько всему этому жить осталось.
Старый 12.03.2015, 14:37   #5  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Logger Посмотреть сообщение
У нас раза в 4 больше
Ну это как раз проблемой быть не должно, там на стороне веб-сервера все что требуется это разобрать XML который сервис отдаст и выдать его в виде примитивного HTML. Балансировку нагрузки они (в теории) заявляли но лицензия в себе содержит имя IIS-а на котором сайт крутится, так что непонятно есть ли она и как работает
Цитата:
По п.2 можете что-нить порекомендовать ?
Навскидку - увы, нет (не знаю PHP). Для ASP и .Net Business connector - делал, ничего сложного (раз даже я справился)
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: Logger (3).
Старый 12.03.2015, 14:58   #6  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от Logger Посмотреть сообщение
2. Если невозможно, то как проще было бы сделать, не переписывая весь сайт ?
А если открыть php-сессию и сохранить объект Com-коннектора в сессии? Переделок много не должно быть по идее
Старый 12.03.2015, 15:27   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
А если открыть php-сессию и сохранить объект Com-коннектора в сессии? Переделок много не должно быть по идее
Если верить тому что мне удавалось нагуглить, то этого сделать нельзя.
Но поскольку я не спец по PHP то, подумал что есть более знающие специалисты, которую могут подсказать, вдруг в каких-то последних билдах это возможно или есть обходные маневры которыми можно достичь такого результата.
Старый 12.03.2015, 15:49   #8  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
У нас админы запустили Com Connector как сервис. Может так поможет?
X++:
D:\WINDOWS\system32\dllhost.exe /Processid:{2A329C77-156A-402F-9954-CD3087FCD3B3}
Старый 12.03.2015, 15:53   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
спс.

Боюсь что нет. Вернее поможет, но всех проблем не решит. Так как вызов logonAs приводит к вызову хранимки CreateUserSessions на которой мы и попадаем в блокировку (там сидит LOCK TABLE - непонятно зачем).
Старый 12.03.2015, 15:55   #10  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Как изменить таймаут на портале?
Третий рисунок? В Com Services.
За это сообщение автора поблагодарили: Logger (5).
Старый 12.03.2015, 16:11   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от raz Посмотреть сообщение
У нас админы запустили Com Connector как сервис. Может так поможет?
X++:
D:\WINDOWS\system32\dllhost.exe /Processid:{2A329C77-156A-402F-9954-CD3087FCD3B3}
Подскажите, а что значит эта строка ?
У нас обычно com объект как сервис запускали прямо из интерфейса через mmc - Administration - Component Service.

Это то же самое будет ?
Старый 12.03.2015, 16:14   #12  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от Logger Посмотреть сообщение
Подскажите, а что значит эта строка ?
У нас обычно com объект как сервис запускали прямо из интерфейса через mmc - Administration - Component Service.

Это то же самое будет ?
Думаю да. Я это подсмотрел в сервисе.
Теги
apache, com connector, com+, php, sysclientsessions

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: 2015 Will Bring Big Improvements to the Dynamics AX Companions Guides Blog bot DAX Blogs 0 01.01.2015 01:17
emeadaxsupport: AX Performance Troubleshooting Checklist Part 2 Blog bot DAX Blogs 0 09.09.2014 16:11
axmfg: Lean manufacturing: Picking activities and kanban line events Blog bot DAX Blogs 0 26.08.2014 21:13
atinkerersnotebook: Using Service Management to Track Service Orders Blog bot DAX Blogs 1 25.08.2013 19:16
emeadaxsupport: New Content for Microsoft Dynamics AX 2012 : October 2011 Blog bot DAX Blogs 0 27.10.2011 17:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:35.