Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
В общем, проблема в следующем... Используя COM оболочку CacheActiveX подключаемся к Каше и работаем с объектами. По завершению работы с объектом на клиентской стороне убиваем ссылку на него - при этом на серверной стороне объект не отцепляется и висит в процессе, соответственно деструктор не вызывается. Объект с серверной стороны может(!!!) убиться только при следующем вызове сервера и то не всегда. Такое ощущение, как будто объект кто-то держит, хотя на клиенте полностью убиты все ссылки на него. Возможно ActiveX прослойка вызывает очистку ссылок на объект только при обращении к этой прослойке - тогда вопрос, почему некоторые ссылки убиваются не сразу при обращении к серверу, а спустя несколько вызовов, когда на клиенте очистятся некоторое количество объектов? В общем, как добиться того, чтобы при очистке ссылки на клиенте - объект на серверной стороне сразу же отцеплялся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 12:45 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
Для корректного закрытия объекта на сервере необходимо вызывать метод SYS_Close. Например (код на Delphi с ранним связыванием): Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 13:12 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
Используем Cache' 5.2. Клиент на Delphi. Взаимодействие осуществляется через CacheActiveX. Маленький примерчик: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. После зыкрытия объектов на клиенте объекты всё еще висят в процессе, деструктор не вызывается, логика при закрытии объектов не отрабатывается. Если зайти посмотреть переменные процесса через портал управления, то там будут видны ссылки на эти объекты - %sysOrefs(2), %sysOrefs(3). Больше объекты с клиентской стороны ни кто не держит - получается, что держит ActiveX прослойка. Кстати, вызывать метод SYS_Close - это пережиток прошлого, т.к. он вызывает на сервере %Close, который ни чего не делает. Сейчас система сама подсчитывает ссылки на объект и уничтожает его (вызывается деструктор) при при достижении кол-ва ссылок 0. Вопрос вот в чем - почему прослойка не отпускает объекты и как добиться того, чтобы объекты на сервере сразу отцеплялись??? ЗЫ: Кажется мне, что это баг каши... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 08:41 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
И еще - если работать через CacheObject, а не CacheActiveX, то объекты вроде закрываются сразу при убивании ссылки на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 10:21 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
Наш опыт показал, что CacheActiveX еще довольно сырой (версии 2007.1-2008.1). По нему было открыто (и решено) несколько проблем в WRC. Хотя с закрытием объектов проблем в этих версиях не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 11:35 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovНаш опыт показал, что CacheActiveX еще довольно сырой (версии 2007.1-2008.1). По нему было открыто (и решено) несколько проблем в WRC. Хотя с закрытием объектов проблем в этих версиях не было. Видать, просто не обращали внимание на закрытие объектов - т.к. при следующем опросе сервера или манипуляции с серверными объектами битые ссылки удаляются. Думаю, это связано с быстродействием, т.к. в CacheObject были периодические задержки при обращении к серверу, которые могли возникать из-за чистки серверных ссылок, а в CacheActiveX ссылки подчищаются не автоматически, а только при последующем доступе к серверу. Только вот происходит это не всегда. Может кто знает 100% метод заставить сервер очистить все свои битые ссылки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 11:51 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
Вы правы, в 2008.1 то же самое (версия CacheActiveX.dll 2008.1.0.401.0.6787). Думаю, это бага, а не фича. Глядя на их кол-во в subj, не перестаю удивляться, как они сами с ним работают (в Studio). Что ж, Вы первый заметили - вам и проблему открывать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 12:35 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
SocratdvКстати, вызывать метод SYS_Close - это пережиток прошлого , т.к. он вызывает на сервере %Close, который ни чего не делает. Всё верно. Но в то же время и sys_Close (другая ссылка). Возможно документация устарела, но я предпочитаю не рисковать. To Alexey Maslov Где Вы нашли, что Студия использует CacheActiveX.dll? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 15:57 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
servitГде Вы нашли, что Студия использует CacheActiveX.dll?Признаю, был неточен. Студия, начиная с 5.1, использует CacheODBC.dll, которая реализует единый транспорт и для ActiveX- (CacheActiveX.dll), и для ODBC-доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 17:05 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
Студия, как и CacheActiveX работает через программу %SYS.DBSRV, поэтому у меня тоже сложилось мнение, что Студия работает через CacheActiveX. Мы тут заметили, что ActiveX для убивания битых ссылок и закрытия объектов на сервере посылает сообщения приограмме %SYS.DBSRV. Возможно, что для принудительного убития ссылки можно самому послать это сообщение. Вопрос лишь в том - как достучаться до этой программы, чтобы посмотреть код и узнать что именно делать? Стандартными средствами найти её не удалось, хотя она точно есть - для проверки можно вызвать d Error^%SYS.DBSRV . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2008, 06:09 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
Ошибся в предыдущем посте - CacheActiveX работает через %SYS.BINDSRV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2008, 06:14 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
To Socratdv Попробуйте так: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2008, 09:54 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
Подобный метод (ForceSync), очишающий ссылки на сервере мы уже искали... К сожалению, в Cache' 5.2 такого метода нету.. В 2007, вроде, тоже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2008, 10:11 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
To Socratdv Тогда закажите adhoc для Вашей версии Caché. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2008, 12:02 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
2servit У меня Cache 2008.1 метода ForceSync у Factory - нет. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2008, 05:10 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
В CacheActiveX.dll версия 2008.1.0.401.0.6787 метод имеется и работает, как и пишет Servit (спасибо!). Это специальный билд Cache for Windows 2008.1 (Build 401_0_6787), включающий несколько AdHoc'ов, в том числе и CacheActiveX, перенесенный из 2008.2. Кстати, sys_Close() все-таки нужен, без него серверный счетчик ссылок не декрементируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 12:32 |
|
||
|
Не закрываются объекты через CacheActiveX
|
|||
|---|---|---|---|
|
#18+
И где взять сей замечательный билд? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 14:55 |
|
||
|
|

start [/forum/topic.php?fid=39&fpage=69&tid=1558837]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 398ms |

| 0 / 0 |
