|
|
|
новичок
      
участник
Last Login: 09.01.2001 18:02
Сообщ.: 4,
Visits: 45
|
|
Как проще всего обьявить постоянно висящий в памяти обьект, создаваемый при старте сервера
Я прочитал в MSDN про:
<OBJECT RUNAT=Server SCOPE="" ID="" PROGID="">
в global.asa, но пока не сообразил как добиться нужного результата.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 03.03.2006 19:03
Сообщ.: 1 908,
Visits: 21 011
|
|
Я бы например сделал так (в global.asa):
set Obj=Server.CreateObject("здеся_имя_объекта")
Если вставить эту строку в событие Session_onStart, то объект будет создаваться для каждой сессии, а если в Application_onStart, то до перезагрузки IIS :-)
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
Есть два способа:
1) Процедуры Application_OnStart, Session_OnStart
В файле global.asa пишем
<SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER">
Sub Application_OnStart
Dim objMy
Set objMy = Server.CreateObject("<имя>")
... ' работа с свойствами, методами объекта
Set Application("objMy") = objMy
End Sub
Это приведет к созданю одной копии объекта доступного всем ASP файлам на сервере. Если нужно иметь разные копии объекта для разных пользователей, то создание объекта проводим в процедуре Session_OnStart. Главное не забывать, что это приводит к затратам памяти на сервере.
2) Тег OBJECT
Я этот способ никогда не использовал, думаю что делается это так. В global.asa перед тегом <SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER"> пишем
<OBJECT ID=имя_переменной PROGID="имя_объекта" SCOPE=Application RUNAT=Server></OBJECT>
Для обращения к созданному объекту пишем "имя_переменной.(свойство|метод)".
P.S. Micro$oft рекомендует использвать первый метод. Подробности ищите в MSDN Library...
|
|
|
|
|
новичок
      
участник
Last Login: 09.01.2001 18:02
Сообщ.: 4,
Visits: 45
|
|
Cпасибо, bazile, за первый способ.
Со вторым я сам разобрался :)
|
|
|
|