12.03.2015, 12:13 | #1 |
Участник
|
Возможно ли кешировать 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 |
Участник
|
По поводу 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 |
Модератор
|
Dynamics Anywhere был хорош во времена 4.0 и 2009. Костылей и "особенностей реализации" что в функционале что в архитектуре конечно хватало, но (после доработки напильником) работало и 15-20 конкурентных пользователей держало стабильно. Если есть планы перехода на 2012 (R3 или что на тот момент будет доступно), есть смысл наверное смотреть сразу на родной мобильный портал
__________________
-ТСЯ или -ТЬСЯ ? |
|
12.03.2015, 14:22 | #4 |
Участник
|
спс за ответ.
Цитата:
По п.2 можете что-нить порекомендовать ? Не хочется все переколбашивать и делать масштабные переписывания. Тем более что непонятно, сколько всему этому жить осталось. |
|
12.03.2015, 14:37 | #5 |
Модератор
|
Ну это как раз проблемой быть не должно, там на стороне веб-сервера все что требуется это разобрать XML который сервис отдаст и выдать его в виде примитивного HTML. Балансировку нагрузки они (в теории) заявляли но лицензия в себе содержит имя IIS-а на котором сайт крутится, так что непонятно есть ли она и как работает
Цитата:
По п.2 можете что-нить порекомендовать ?
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: Logger (3). |
12.03.2015, 14:58 | #6 |
Участник
|
|
|
12.03.2015, 15:27 | #7 |
Участник
|
Цитата:
Но поскольку я не спец по PHP то, подумал что есть более знающие специалисты, которую могут подсказать, вдруг в каких-то последних билдах это возможно или есть обходные маневры которыми можно достичь такого результата. |
|
12.03.2015, 15:49 | #8 |
NavAx
|
У нас админы запустили Com Connector как сервис. Может так поможет?
X++: D:\WINDOWS\system32\dllhost.exe /Processid:{2A329C77-156A-402F-9954-CD3087FCD3B3} |
|
12.03.2015, 15:53 | #9 |
Участник
|
спс.
Боюсь что нет. Вернее поможет, но всех проблем не решит. Так как вызов logonAs приводит к вызову хранимки CreateUserSessions на которой мы и попадаем в блокировку (там сидит LOCK TABLE - непонятно зачем). |
|
12.03.2015, 15:55 | #10 |
NavAx
|
Как изменить таймаут на портале?
Третий рисунок? В Com Services. |
|
|
За это сообщение автора поблагодарили: Logger (5). |
12.03.2015, 16:11 | #11 |
Участник
|
Цитата:
У нас обычно com объект как сервис запускали прямо из интерфейса через mmc - Administration - Component Service. Это то же самое будет ? |
|
12.03.2015, 16:14 | #12 |
NavAx
|
|
|
Теги |
apache, com connector, com+, php, sysclientsessions |
|
|