Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Using BrowserHawk Objects in Global.asa Efficiently

Posted on 2004-08-24
5
Medium Priority
?
288 Views
Last Modified: 2012-05-05
I've got a GLOBAL.ASA file that is presently counting Active Users (see below). However, now I have Browser Hawk installed on my dedicated server and I would like to add code to GLOBAL.ASA that records in an Access database for each user session whether the user has FLASH installed or not. The code to do this is basically this:

Dim objConn
Dim ConnectionString
Set objConn = Server.CreateObject("ADODB.Connection")
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=path to database;"

objConn.Open ConnectionStringset bhObj = Server.CreateObject("cyScape.browserObj")
bhObj.SetExtProperties "plugin_flash"
bhObj.GetExtPropertiesEx
flash = bhObj.Plugin_Flash

if flash = 0 Then
  objConn.Execute(" INSERT INTO browserstats ( flash ) SELECT -0 AS flashinst")
else
 objConn.Execute("INSERT INTO browserstats ( flash ) SELECT -1 AS flashinst")
end if

objConn.Close
Set objConn = Nothing

What I'm unsure about is how to put this code into my present GLOBAL.ASA efficiently so that I only open the BrowserHawk object once, etc. Here is my present GLOBAL.ASA:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">

Sub Application_OnStart
      ' Set our user count to 0 when we start the server
      Application("ActiveUsers") = 0
End Sub

Sub Session_OnStart
      ' Change Session Timeout to 20 minutes (if you need to)
      Session.Timeout = 20
      ' Set a Session Start Time
      ' This is only important to assure we start a session
      Session("Start") = Now
      ' Increase the active visitors count when we start the session
      Application.Lock
            Application("ActiveUsers") = Application("ActiveUsers") + 1
      Application.UnLock
End Sub

Sub Session_OnEnd
      ' Decrease the active visitors count when the session ends.
      Application.Lock
            Application("ActiveUsers") = Application("ActiveUsers") - 1
      Application.UnLock
End Sub

</SCRIPT>

Any suggestions very much appreciated!

Kathryn
0
Comment
Question by:birstein
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 5

Expert Comment

by:darksinclair
ID: 11888522
Would this not work if you included your database update inside the subroutine Session_OnStart ?
0
 
LVL 1

Author Comment

by:birstein
ID: 11888540
Yes, I think it would, but do I want to create the connection and close the connection everytime a new session starts? Or is it much more efficient to just open the connection (objConn.Open ConnectionString) just once and keep it open.

I'm also thinking the same would be true for opening the BrowserHawk object:

set bhObj = Server.CreateObject("cyScape.browserObj")

What do you think?
0
 
LVL 31

Accepted Solution

by:
alorentz earned 2000 total points
ID: 11888560
Open and close in every session, that is the standard practice.  To much overhead onthe server to keep it open all the time.


Sub Session_OnStart
     ' Change Session Timeout to 20 minutes (if you need to)
     Session.Timeout = 20
     ' Set a Session Start Time
     ' This is only important to assure we start a session
     Session("Start") = Now
     ' Increase the active visitors count when we start the session
     Application.Lock
          Application("ActiveUsers") = Application("ActiveUsers") + 1
     Application.UnLock
   
 Dim objConn
Dim ConnectionString
Set objConn = Server.CreateObject("ADODB.Connection")
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=path to database;"

objConn.Open ConnectionStringset bhObj = Server.CreateObject("cyScape.browserObj")
bhObj.SetExtProperties "plugin_flash"
bhObj.GetExtPropertiesEx
flash = bhObj.Plugin_Flash

if flash = 0 Then
  objConn.Execute(" INSERT INTO browserstats ( flash ) SELECT -0 AS flashinst")
else
 objConn.Execute("INSERT INTO browserstats ( flash ) SELECT -1 AS flashinst")
end if

objConn.Close
Set objConn = Nothing



End Sub
0
 
LVL 1

Author Comment

by:birstein
ID: 11888613
Dear alorentz:

I'll put everything in the Session_OnStart sub as you suggest. This is just what I wanted to know - what makes the most overhead. . .

Kathryn
0
 
LVL 31

Expert Comment

by:alorentz
ID: 11888690
Best bet is to open and close all objects when you need them...keeping them open is not efficient.

Good Luck!
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I have helped a lot of people on EE with their coding sources and have enjoyed near about every minute of it. Sometimes it can get a little tedious but it is always a challenge and the one thing that I always say is:   The Exchange of informatio…
This demonstration started out as a follow up to some recently posted questions on the subject of logging in: http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_28634665.html and http://www.experts-exchange.com/Programming/…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…

670 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question