C'est un fichier qui m'a posé beaucoup de problèmes la première fois, car il fallait comprendre comment l'utiliser et la documentation n'était pas claire. J'ai dû abandonner après quelques blocages et pertes de performances. Une deuxième tentative a eu plus de chance.
<script language="VBScript" runat="Server"> Sub Application_OnStart ' Lancement du Serveur IIS Application("CTR")=0 End Sub Sub Session_OnStart ' Connexion Application("CTR")=Application("CTR")+1 End Sub Sub Session_OnEnd ' Déconnexion Application("CTR")=Application("CTR")-1 End Sub Sub Application_OnEnd ' Arrêt de IIS End Sub </script>Utilisé simplement, il permet de mettre un compteur de connexions, ou plutôt un compteur de sessions. Et c'est là que commencent les problèmes, car les sessions se terminent 20 minutes après le départ de la personne connectée, et le compteur est donc faux.
Pour le rendre plus juste il faudrait mettre <%Session.Abandon%> en fin de chaque page ASP, et faire une croix sur les variables de session, si pratiques pour passer des paramètres entre pages.
Au mieux, on pourrait modifier le bloc Session_OnStart pour gagner 19 minutes.
Sub Session_OnStart Application("CTR")=Application("CTR")+1 Session.Timeout=1 End Sub
Pour éviter de définir les objets Connexion et RecordSet à chaque page, il est bien pratique d'utiliser les variables Application et Session (Interdit chez eWebCity) comme dans l'exemple suivant :
Sub Application_OnStart Set Application("oC")=Server.CreateObject("ADODB.Connection") Application("oC").Open "ConnexionString" Application("CTR")=0 End Sub Sub Session_OnStart Set Session("oRS")=Server.CreateObject("ADODB.Recordset") Session("oRS").ActiveConnection=Application("oC") Application("CTR")=Application("CTR")+1 Session.Timeout=1 End Sub Sub Session_OnEnd Application("CTR")=Application("CTR")-1 Set Session("oRS")=Nothing End SubMais toutes les pages ASP n'ont pas besoin d'une connexion à une base de données, et il vaut mieux faire le ménage dans les procédures Session_OnStart et Session_OnEnd, pour utiliser une procédure spéciale d'ouverture de RecordSet :
Sub OpenRS On Error Resume Next Session("oRS").Open SQL If Err.Number<>0 Then Err.Clear Set Session("oRS")=Server.CreateObject("ADODB.Recordset") If Err.Number=0 Then Session("oRS").ActiveConnection=Application("oC") Session("oRS").Open SQL If Err.Number<>0 Then Session.Abandon Err.Clear End If Else Session.Abandon Err.Clear End If End If End SubDans la variable SQL est placée la commande qui doit extraire les enregistrements à traiter. Si le RecordSet existe déjà pour la session, on va l'utiliser sans avoir à le définir. S'il n'existe pas on le crée. Si ce n'est pas possible, on abandonne l'opération.
Quand une page n'est pas chaînée sur une suivante, vous pouvez libérer l'objet RecordSet avec l'instruction suivante.
Session("oRS").Close Set Session("oRS")=Nothing