Форум: "Основная";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];
ВнизКак сделать счетчик сессий ActiveX объекта? Найти похожие ветки
← →
Aleksandr (2003-10-08 16:03) [0]У меня библиотека ActiveX и, соответственно, объект. При первом запуске он должен в глобальный implementation-объект загрузить данные из таблицы, призакрытии последнего экземпляра - выгрузить. Как это отфиксировать? Я попытался сделать там же в implementation целую константу-переменную, при инициализации объекта она проверяется и увеличивается, при уничтожении - уменьшается. Если равна 0 при инициализации, то грузятся данные, если 0 при уничтожении, то освобождаются. После этого провел тест - запустил одну программу как exe, а вторую - из Делфи. Но при трассировке вторая тоже грузит данные, и счетчик у нее тоже =0. Как это сделать правильно, раз такой вариант не работает?
← →
Aleksandr (2003-10-08 16:49) [1]Да, забыл добавить - модель объекта - Single Instance, Free.
← →
Юрий Федоров (2003-10-08 16:50) [2]Через ActiveX - никак, разные адресные пространства в разных программах
← →
Aleksandr (2003-10-08 17:10) [3]Вот тебе и раз :(. А чего тут Кэнту тогда распинается о счетчиках в ActiveX? Правда, у него тоже все как-то смутно по этому поводу, ощущение, что он сам не проверяет, о чем ишет...
← →
Aleksandr (2003-10-08 17:11) [4]А может, в скрипте php пространство будет одним?
← →
Юрий Федоров (2003-10-08 17:17) [5]>>А чего тут Кэнту тогда распинается о счетчиках в ActiveX?
Так это для одного процесса
>>А может, в скрипте php пространство будет одним?
не в курсе, может быть...
← →
nikkie (2003-10-08 17:37) [6]>Через ActiveX - никак, разные адресные пространства в разных программах
хочется спросить - а что Вы имеете в виду под ActiveX? кажется с Вашим сотрудником мы это уже обсуждали :). чисто чистоты терминологии ради - обычно это называют in-proc сервер.
>Aleksandr
а ты уверен, что тебе важно, чтобы при создании объекта в разных процессах инициализация происходила только раз? как объект использовать-то собираешься?
← →
Юрий Федоров (2003-10-08 17:42) [7]>>nikkie © (08.10.03 17:37) [6]
может тут и есть какая-то путаница в терминологии, но если это библиотека(см [1]), то по любому это in-proc сервер
← →
nikkie (2003-10-08 18:16) [8]это безусловно библиотека, а вот что за объект - гадать надо. Automation Object? COM Object? COM+ Event Object? Transactional Object?
нет, я-то согласен, что это in-proc сервер. только для ясности надо вещи своими именами называть. в COM-терминах микрософт и без нас такого наворотила... :)
я правильно догадываюсь, что предполагается использовать объект в php-скрипте, работающем на сервере? про php конкретно сказать не могу, но очевидно, что будут ли два запроса обрабатываться в двух потоках в одном процессе или в двух разных процессах зависит от сервера. а может и от его настроек. кроме того, как мне помнится, perl к apache можно было подключить как CGI (то есть для обработки каждого запроса стартовался новый процесс) или с помощью perl_mod. как подключается php я не знаю.
← →
Aleksandr (2003-10-08 18:23) [9]2 nikkie:
Суть в том, что мне действительно важно, чтобы данные из таблиц грузились в массив только один раз. В этом весь смысл библиотеки - разгрузить непомерно занятый SQL-server. А функция этого объекта с математическими операциями, работающими с данными этих массивов, вызывалась из нескольких процессов.
← →
nikkie (2003-10-08 18:52) [10]если в массив - то сам понимаешь, эта область данных будет принадлежать одному конкретному процессу.
можно, конечно, попробовать local server вместо in-proc.
или выбрать какой-то из вариатнов interprocess communication - например, memory mapped files. или написать свой промежуточный сервер и обращаться к нему через sockets.
вопрос еще в том, как часто надо загружать/обновлять данные с сервера. может можно написать программку, которая будет раз в день выгружать данные в текстовый/бинарный файл/desktop db/другой sql server? и пусть твой объект читает данные оттуда, куда их выгрузили.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c