|
COM соединение. Пул соединений. | ☑ | ||
---|---|---|---|---|
0
Scorpion_1986
10.01.14
✎
13:18
|
Добрый день,
Пробую работать с 1с через ком соединения из php(линукс). Нужна помощь: 1. Когда я создаю ком соединение - оно каждий раз забирает пользовательскую лицензию? Или оно воопше не использует лицензии. 2. Как создать пул соединений? Он создается в 1с а php уже просто не создает подключения а берет из пула? Достаточно ли одного ком соеднения для двох одновременных обращений, тоесть мультизадачено ли соединение? |
|||
1
Scorpion_1986
10.01.14
✎
13:19
|
Ну и может кто добрый и имеет пример скрипта php для линукса с подключением через ком или из пула брать))
|
|||
2
Jaap Vduul
10.01.14
✎
13:27
|
А какой в линуксе может быть COM?
|
|||
3
Serginio1
10.01.14
✎
13:31
|
||||
4
zladenuw
10.01.14
✎
13:32
|
(2) так в 8.3 обещали.
|
|||
5
Scorpion_1986
10.01.14
✎
13:34
|
да 8.3 обещали. Ок давайте забудем про линукс. все тоже но с виндой
|
|||
6
Apokalipsec
10.01.14
✎
13:35
|
(5) 1. лицензию забирает.
2. в гугле много информации |
|||
7
zladenuw
10.01.14
✎
13:35
|
а что ты хочешь именно делать ? может проще не СОМ, а веб сервис и вызвать нужные функции. и гонять данные
|
|||
8
fisher
10.01.14
✎
13:38
|
Стоп-стоп-стоп. Какой еще COM в 8.3 на линуксе?
Или имеется в виду только эмуляция работы с 1С а-ля ком-коннектор? |
|||
9
Scorpion_1986
10.01.14
✎
13:40
|
тут вот не хотят веб сервис, из того что лицензции забирает а соединений будет много.
А получаеться если я создам пул например из 1 соединения - то у меня заберет 1 лицензию и все? я просто буду всегда обращатся к этому соединению. |
|||
10
Jaap Vduul
10.01.14
✎
13:40
|
1) Каждое COM соединение - минус лицензия.
2) Смотри свойства MaxConnections, PoolCapacity и PoolTimeout у ComConnector |
|||
11
Ranger_83
10.01.14
✎
13:42
|
(9) хочешь обмануть 1с?
|
|||
12
sttt
10.01.14
✎
13:45
|
(0) бредовое занятие
|
|||
13
Scorpion_1986
10.01.14
✎
13:46
|
(10)
1. Так значит если оно в пуле, то оно будет там висеть и лицензицю не забирет только одну? Правильно? Каждий раз пользуясь этим соединением лицензию еще раз забирать не будет? |
|||
14
Scorpion_1986
10.01.14
✎
13:47
|
(11) да не то что бы обмануть. хочу понять.
1с пишет: Открытые внешние соединения могут быть сохранены в пуле для их повторного использования, что позволяет экономить ресурсы |
|||
15
zladenuw
10.01.14
✎
13:47
|
(13) 1 соединение, 1 лицензия
|
|||
16
Scorpion_1986
10.01.14
✎
13:47
|
(15)
|
|||
17
Scorpion_1986
10.01.14
✎
13:51
|
(15)
Значит все супер. Если я в пуле создам например соединение(или я так себе подумал, просто не буду разрывать подключеное соединение) - оно себе забирет только одну лицензию и тоесть я не буду создавать новое соединение а буду пользоватся этим. Осталось узнать - а соединение многозадачно? тоесть я могу на него кидать одновременно несколько задач? |
|||
18
Dolphinbet
10.01.14
✎
13:52
|
(17) нет
|
|||
19
Jaap Vduul
10.01.14
✎
13:53
|
(13)
Нет, лицензии повторно не будут использоваться. Но при многопользовательской работе это будет постоянное ожидание освобождения соединения. |
|||
20
zladenuw
10.01.14
✎
13:53
|
(17) нет. но можно на стороне клиента запускать фоновые задание которые смогут работать одновременно. но это геморно. и соединение СОМ без активности долго не живет. периодически нужно его вызвать
|
|||
21
Scorpion_1986
10.01.14
✎
13:53
|
(12) ну кому как, не хочу уже даватся в подробности задачи но в результате нужно с економить лицензии работая из внешних систем
|
|||
22
Scorpion_1986
10.01.14
✎
13:55
|
(19)
Но при многопользовательской работе это будет постоянное ожидание освобождения соединения. А почему? соединение уже забрало ж себе лицензию зачем ожидать свободной? Или каждое обращение к соединению забирает лицензицю? |
|||
23
Scorpion_1986
10.01.14
✎
13:56
|
(20)
Я сейчас работаю с фоновыми, достало больше не хочу. Мне нужно добиться паралельной работы не забирая лицензий |
|||
24
Dolphinbet
10.01.14
✎
13:57
|
(23) так не бывает :)
|
|||
25
Scorpion_1986
10.01.14
✎
13:58
|
(20)
А то что долго не живет - не страшно, можно проверять активно ли оно,если нет то создать новое. Я просто запутался уже, Соединение забирает лицензицию или каждое обращение к существующему соединению тоже берет лицензию... |
|||
26
Dolphinbet
10.01.14
✎
13:59
|
Соединение работает последовательно! паралле6льной работы с одним ком-соединением не может быть
|
|||
27
sttt
10.01.14
✎
14:00
|
(21) сделай иначе. а, что с фоновыми не так?
|
|||
28
Jaap Vduul
10.01.14
✎
14:01
|
(22)
Лицензии ни при чём, COMСоединение работает в одном потоке. Хотя как там на линуксе в 8,3 будет не знаю... |
|||
29
zladenuw
10.01.14
✎
14:03
|
(28) этого еще дождаться нужно.
|
|||
30
hhhh
10.01.14
✎
14:07
|
(25) но зачем этот пул? Если разорвать соединение, оно отдаст лицензию. И следующее соединение возьмет ее снова.
|
|||
31
Dolphinbet
10.01.14
✎
14:09
|
(30) пул нужен чтобы не тратить время на подключение, создание ком-соединения...
|
|||
32
Serginio1
10.01.14
✎
14:12
|
31+ Кроме того можно уменьшить время и на инициализацию в
УстановкаПараметровСеанса |
|||
33
Scorpion_1986
10.01.14
✎
14:15
|
(26) Тесть если одна задачо из php обратилась на соединения и вызвала функцию то другая паралельно поступившая задача не сможе через это же соединение обратиться к 1с?
|
|||
34
Scorpion_1986
10.01.14
✎
14:15
|
(31) (32) Согласен, но тоже приемущество. Будет быстрее
|
|||
35
Serginio1
10.01.14
✎
14:18
|
(33) Для каждого потока вызывай Connect он для этого и предназначен
|
|||
36
Scorpion_1986
10.01.14
✎
14:21
|
(35)
Ну так то понятно, просто одновременно может быть много коннектов, соотвественно в один момент может много лицензий забрать. Я от хочу понять могу ли я на один и тот же коннект обращаться одновременно, отработает ли он паралельно.. |
|||
37
fisher
10.01.14
✎
14:21
|
ИМХО, вряд ли кто-то тут реально пробовал пул использовать.
|
|||
38
Serginio1
10.01.14
✎
14:22
|
35+ Хотя для V83.COMConnector.1 ThreadingModel Both. Так что можно вызывать из разных потоков
|
|||
39
fisher
10.01.14
✎
14:22
|
(36)
Установка соединения выполняется по следующему алгоритму: 1. Внешнее соединение с требуемыми параметрами ищется в пуле соединений. Если найдено, то используется оно. 2. Если Внешнее соединение с требуемыми параметрами не найдено, то анализируется не исчерпан ли лимит по числу одновременно существующих соединений. Если не исчерпан, то создается новое Внешнее соединение. 3. Если лимит исчерпан, но при этом в пуле имеются неиспользуемые Внешнее соединение, то соединение, дольше всех находящееся в пуле, удаляется и создается новое Внешнее соединение. 4. Если никаким способом найти подходящее или создать новое Внешнее соединение не удалось, то происходит ожидание освобождения Внешнее соединение другим потоком, после чего весь процесс повторяется, начиная с пункта 1 |
|||
40
Serginio1
10.01.14
✎
14:24
|
(36) По опыту Веб сервисов лицензия забирается только одна. Это как использование на одном компьютере множество 1С. С COM должна исполльзоваться та же модель. Сам лично не проверял
|
|||
41
fisher
10.01.14
✎
14:25
|
Сэкономить на лицензиях при необходимости параллельного выполнения не получится. Пул тебе тут ничем не поможет. Хотя... Учитывая (37)...
|
|||
42
Scorpion_1986
10.01.14
✎
14:31
|
(39)
по пункту 2. Тоесть на соединения ставится лимит задач которые через него выполняются. Значит ли это что через одно подключение в пуле можна делать паралельно несколко задач(если не исчерпан лимит), при этом потратив на все это только одну лицензию? |
|||
43
Serginio1
10.01.14
✎
14:35
|
38+ v8: Веб-сервис
|
|||
44
fisher
10.01.14
✎
14:36
|
(42) Само соединение однозадочно. Читай внимательнее. В контексте не соединение, а ПУЛ соединений.
|
|||
45
hhhh
10.01.14
✎
14:41
|
(42) вряд ли. вроде пулы отдельно, лицензии отдельно. Они никак не взаимосвязаны.
|
|||
46
Scorpion_1986
10.01.14
✎
14:44
|
От нашел статейку. Может вариант с внешним веб сервисом поможет обойтись одной лицензией
http://www.develplatform.com/2013/07/com.html |
|||
47
Scorpion_1986
10.01.14
✎
14:57
|
Ну так я и не все понял))) Соединение забирает лицензию, это понятно. А если работать уже с этим соединением (через пул, или не закрывая его) и кидать на него паралельно задачи то будут ли лицензии забиарть на каждую задачу которая не создает соединение а пользуется уже существующим, будет ли оно работать паралеьно... не понятно пока...
Вопшем нужно пробовать....Всем спасибо! |
|||
48
1СКонсультант
10.01.14
✎
15:09
|
а зачем такие извращения? один пользователь запуская с одного компа ное колво сеансов берет всего одну лицензию. Соответственно запускаем 1сину с обработкой обработка выполняет задачи и зарывает сеанс. не?
|
|||
49
Dolphinbet
10.01.14
✎
15:33
|
(46) то что написано в статье не будет работать в 8.3
|
|||
50
Dolphinbet
10.01.14
✎
15:35
|
в 8.3 ком-соединение нельзя закешировать во временном хранилище, так как при последующем обращении к серверу нет гарантии что мы не попадем на сервер (в случае кластера серверов) работающий под Линукс где ком-объектов нет.
|
|||
51
Dolphinbet
10.01.14
✎
15:38
|
http://www.develplatform.com/2012/12/com-2.html вот этот вариант может подойти
|
|||
52
Scorpion_1986
10.01.14
✎
16:04
|
(51) Да я как раз за него и думаю. И согласно статье то тут ми закешировали ком и ое взял одну лицензицю и все.
Хотя впринципе надо попробовать не розрывать соеденения - и обращаться к нему, думаю оно тоже не должно по логике брать лицензии. |
|||
53
Torquader
11.01.14
✎
00:46
|
Я тут на днях на php Web-сервер пописывал, который ловит подключения через Socket и в одном потоке обрабатывает их последовательно.
Для этого создаётся постоянный php-процесс, который ловит задания от других процессов и передаёт на обработку (в вашем случае в 1С) - умная 1С что-то там делает, а скрипт продолжает работать дальше, получая другие запросы и складывая их в очередь. Конечно - медленно это всё и глупо, но для параллельной работы придётся запрашивать несколько лицензий. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |