VyÜlo: 30.11.2000 Rubrika:
ASP - ZdrojovΘ k≤dy
Jak zjistit poΦet aktußln∞ p°ipojen²ch nßvÜt∞vnφku k VaÜemu webu?
Snφte o ASP k≤du, kter² do VaÜich strßnek vlo₧φ n∞co jako Tento server si prßv∞ Φte 25 Φtenß°∙? Netruchlete a p°eΦt∞te si tento Φlßnek. Dozvφte se zßkladnφ vlastnosti prßce se souborem global.asa, promenn²ch Application a do ruky se Vßm dostane hotov² zdrojov² k≤d pro slibovanΘ poΦφtadlo nßvÜt∞vnφk∙. Vφce v Φlßnku...
Vlo₧te si do sv²ch strßnek poΦφtadlo, kterΘ Vßm ukß₧e poΦet prßv∞ p°ipojen²ch lidφ. Takovouto parßdiΦku naleznete opravdu na hodn∞ webech, tak proΦ ji nemφt i na svΘm.
Soubor global.asa, kter² je nutnΘ umφstit do rootu VaÜeho webu obsahuje urΦitΘ SUBy resp. funkce, kterΘ se provßdφ v jistou dobu. KonkrΘtn∞ se jednß o Application_OnStart, Application_OnEnd, Session_OnStart a Session_OnEnd.
Pomocφ t∞chto funkcφ zajistφme p°iΦtenφ Φφsla jedna do prom∞nnΘ typu Application(prom∞nnß, kterß se uchovßvß v pam∞ti na ·rovni aplikace) a po odpojenφ nßvÜt∞vnφka toto Φφslo zmenÜime o jedniΦku.
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
'Toto je povinnß hlaviΦka global.asa souboru.
Sub Application_OnStart
'Funkce, kterß se provede p°i nastartovßnφ webovskΘho serveru.
'Nadefinovßnφ klφΦovΘho slova(prom∞nnΘ) v Application.
Application("ActiveUsers") = 0
End Sub
Sub Session_OnStart
'Nßsledujφcφ k≤d se provede p°i p°ipojenφ
'nßvÜt∞vnφka k serveru.
'P°iΦte se jedniΦka do prom∞nnΘ ActiveUser
Session.Timeout = 10
'Nastavenφ doby trvßnφ(v minutßch) jednΘ Session.
Session("Start") = Now
Application.Lock
'P°ed zßpisem do prom∞nnΘ typu Application je nutnΘ
'zamknout tuto oblast.
'Je to z d∙vodu mo₧nosti nastßnφ dvou zm∞n v jednu
'chvφli.
Application("ActiveUsers") = Application("ActiveUsers") + 1
' Zv²Üenφ poΦtu Φtenß°∙ o 1.
Application.UnLock
'Op∞tovnΘ uvoln∞nφ(odemΦenφ) Application.
End Sub
Sub Session_OnEnd
'Tato funkce se provede po vyprÜenφ Session,
'tedy po dob∞ nastavenΘ jako Session.Timeout.
Application.Lock
'Op∞t zamkneme Application.
Application("ActiveUsers") = Application("ActiveUsers") - 1
'OdeΦteme jedniΦku z ActiveUser.
Application.UnLock
'A odemkneme Application.
End Sub
</SCRIPT>
V²Üe uveden² k≤d je nutnΘ ulo₧it jako global.asa do rootu VaÜeho webu.
Zobrazenφ aktußlnφho poΦtu nßvÜt∞vnφk∙
Pro zobrazenφ Φφsla ve VaÜφ strßnce lze pou₧φt nap°φklad tento k≤d:
<%=Application("ActiveUsers")%>
Chcete-li v²stup pat°iΦn∞ vylepÜit, pou₧ijte nßsledujφcφ °ßdky:
<%
intPocet = Application("ActiveUsers")
If intPocet = 1 Then
Response.Write "Tento server si prßv∞ Φte " & intPocet & " Φtenß°."
ElseIf intPocet < 5 Then
Response.Write "Tento server si prßv∞ Φtou " & intPocet & " Φtenß°i."
Else
Response.Write "Tento server si prßv∞ Φte " & intPocet & " Φtenß°∙."
End if
%>
Jak to vylepÜit?
Ka₧dß aplikace mß svΘ mouchy, kterΘ by se dali zlep∞Üovat. Ani tato nenφ vyjφmkou.
VeÜkerΘ informace(vlastn∞ jenom jedna) se uchovßvß v prom∞nnΘ typu Application, kterß je pam∞¥ovß prom∞nnß resp. vyma₧e se p°i restartovßnφ serveru. Hodilo by se ulo₧it(nejlΘpe do textovΘho souboru) poslednφ stav, kter² na poΦφtadle nastal a to pomocφ funkce Application_OnEnd a p°i zapnutφ webovskΘho serveru op∞t naplnit prom∞nnou ActiveUser daty ze souboru.
VeÜkerΘ zdrojovΘ k≤dy si stßhn∞te z http://www.netday.cz/web/examples/counter/source.zip.
Zden∞k Cendra
ceskywap@ceskywap.cz
Souvisejφcφ Φlßnky
|