Már a hálózat mûködésének legelsõ napjaiban felmerült az igény, hogy indítsunk számlálót. Szerettük volna látni: mekkora a forgalmunk. Majd arra is kiváncsiak lettünk, hogy kik látogatnak. Mindkét problémára több megoldást is kerestünk (más szerver, PERL, CGI, stb), de végül is úgy döntöttünk, hogy ezt magunk írjuk meg.
A számláló elkészítésére a megoldást Novell SSI utasításokkal találtuk meg. Ez a következõ utasítás beillesztését jelenti a letoltendõ oldalba:
<!--#COUNT FILE="counter.txt"--> |
Ez létrehoz az illetõ oldal könyvtárában egy "counter.txt" nevû file-t, amiben ASCII módon tárolja a számot. Az utasítás végrehajtásakor ezt a számot automatikusan eggyel növeli, és ezen utasítás helyén már a léptetett szám áll. Természetesen ez már formázható, és a kivánt módon megjeleníthetõ. A baj csak az, hogy a szerver alapállapotban ezt az SSI utasítást csak azokon a file-okon végzi el, aminek a kiterjesztése SSI. Ennek a problémának a megoldását többféleképpen is meg lehet oldani:
Mi a második utat követtük. Letöltéskor (www.felsobuki.sulinet.hu) indul az index.htm automatikusan. Ez egy egyszerû, gyorsan letöltõdõ oldal, ami közli, hogy mi fog jönni. Ez tölti aztán be automatikusan az index.ssi-t, amit a fejbe írt
META HTTP-EQUIV="Refresh" CONTENT="1; URL=http://www.felsobuki.sulinet.hu/index.ssi" |
sor 1 másodpercen belül végez el. Itt az 1-es természetesen más számra is kicserélhetõ, akkor annyi másodpercen belül történik a töltés. Ha ide 0-t írunk, akkor egybõl megtörténik a töltés.
Ha már ilyen szépen megy a látogatók számlálása, jött az igény a látogatók nyílvántartásáera is. Ismét az SSI utasításokkal oldottuk meg a feladatot. Ez a következõ sorok HTML oldalba beillesztésével tehetjük meg:
<!--#APPEND FILE="guest.txt" LINE="&&REMOTE_HOST&& (&&REMOTE_ADDR&&) : &&DATE_LOCAL&& <&&HTTP_USER_AGENT&&>"--> <!--#CONFIG TIMEFMT="%Y. %m. %d."--> <!--#FLASTMOD FILE="index.htm"--> |
ahol, az elsõ sor a "guest.txt" file-ban tárolja a látogatók adatait, jól kielemezhetõ határolókkal (":" és "<>"). A második és harmadik sor pedig megjeleníti az index.htm file módosítási idejét. Ezt fel lehet használni az utolsó módosítás idejének kijelzésére. Ezt az idõt (mivel az oldal már hosszú ideje nem változott) a felhasználói adatokat feldolgozó program változtatja automatikusan, így követhetõ az utolsó feldolgozási idõ. A probléma ismét az, hogy ezt a szervernek kell elõállítani, így a kiterjesztésének SSI-nek kell lennie. Ez nálunk az index.ssi file-ban található, ezt úgyis átalakítja a szerver.
A statisztika tárolására használt file-ok neveinek megválasztása még a program elsõ verzióira vezethetõ vissza. Semmiféle logikai kapcsolat nincs a nevek adása és a cél között. A file-ok a WEB szerver kiindulási könyvtárában vannak (sys:\web\docs), de tetszõleges helyre is helyezhetõk (ekkor a hivatkozások korrigálandók!):
|
|
|
| bongesz0.txt | A böngészõk adatai az aktuális hónapban |
| bongesz1.txt | A böngészõk összesített adatai |
| darab.txt | A látogató gépek adatai IP cím, látogatási idõpont és szám szerint |
| guest.txt | A még fel nem dolgozott látogatói adatok |
| g.txt | A feldolgozás ideje alatti segédfile |
| oprendsz.txt | Az operációs rendszer adatai az aktuális hónapban |
| opr1.txt | Az operációs rendszer összesített adatai |
| orszagok.txt | Az országok adatai az aktuális hónapban |
| orsz1.txt | Az országok összesített adatai |
| osszes.txt | Az adott hó, már feldolgozott adatai |
Minden file egyszerû ASCII formátumú (mint a TXT kiterjesztés mutatja), szövegszerkesztõvel olvasható, írható. Kézzel módosítani nem célszerû, kezelését a programok automatikusan végzik.
Az adatok feldolgozása az elsõ idõkben kézzel történt, annak minden mellékhatásával (elszámolás, unalom...) együtt. Szükségessé vált egy program, ami ezen adatokból kigyûjti a lényeget, különszedi az országokat, operációs rendszereket, böngészõket. Célunk volt még az aktuális hó, és az összesített látogatók megmutatása is. Ezt egy Delphi 3.0-val készült program végzi, aminek a neve STATISZT.EXE
A program által ellátott feladatok:
A program használatához be kell állítani a STATISZT.INI file-t a program könyvtárában, amit a program indulásakor beolvas. Elsõ indításkor létrehozza ezt a file-t, amit tetszõleges - formátum alkalmazása nélkül mûködõ - szövegszerkesztõ segítségével lehet megszerkeszteni. Az általunk használt ini file a következõ:
[WebSite] IP=195.199.73.109 Path=w:\ [Date] Year=2000 Month=APR [Local] IP1=195.199.73.108 IP2=195.199.73.107 IP3= IP4= [Nets] 1=.matav.net 2=.elender.hu 3=.at-2742.netway.at 4=.datanet.hu 5=.inktomisearch.com 6=.externet.hu 7=.bdtf.hu 8=.deltav.hu 9=.aol.com 10=.alarmix.net |
AZ IP a szerver címe, aminek nem szabad szerepelnie a nyilvántartásban. Ugyanígy az IP1, IP2 ... a helyi címeket jelentik (nálunk a modemes IP-k ezek), amelyek szintén nem szerepelhetnek a nyilvántartásban. A PATH tartalmazza a statisztikai file-ok elérését. Ez a könnyebb kezelés érdekében külön meghajtón van (amit csak a rendszergazda lát). A YEAR és MONTH az aktuális hónap adatai, innen tudja a program, ha hónapváltás következik be. A NETS kulcsszó alatt pedig a "sokgépes címek" kezelését segíti. Például a MATÁV-nál elõfizetõk minden híváskor más és más IP számot kapnak. Ez rengeteg egyedi gép nyilvántartását követelné. Az 1=.matav.net azt írja elõ, hogy minden olyan gépet, melyben a ".matav.net" elõfordul egy gépnek kell tekinteni. Ez a lista további számokkal (11, 12, ...) bõvíthetõ.
A program használata nagyon egyszerû, csak el kell indítani. Tevékenységének minden mozzanatát kiírja. Tapasztalat szerint vannak esetek, amikor egy ilyen nyilvántartási file-t nem lehet megváltoztatni (a WEB szerver zárolja?). Ilyen esetekre felkészülve a hibás file mûvelet hibajelzését kiírja, és ismét meg lehet próbálkozni vele, illetve akár kézzel (Norton vagy Intézõ felhasználásával) segíteni lehet a programnak.
Meg lehetne oldani azt is, hogy a STATISZT.EXE készítse el a szükséges adatfile-ok html-es verzióit is (fix néven), és a szükséges helyen ezeket a WEB szerver küldené. Ezzel szemben mi a NETBASIC program mellett döntöttünk, ez a LISTA.BAS program. A programot a "sys:\netbasic\web" helyre kell másolni. Ez a program kiírja az összes adatot. A program hívása a különbözõ feladatra a következõ:
| Feldolgozás elõtti adatok: | http://www.....sulinet.hu/netbasic/lista.bas/latogato |
| Országok adatai: | http://www.....sulinet.hu/netbasic/lista.bas/orszag |
| Böngészõk adatai: | http://www.....sulinet.hu/netbasic/lista.bas/bongeszo |
| Operációs rendszer adatai: | http://www.....sulinet.hu/netbasic/lista.bas/op |
| IP adatok: | http://www.....sulinet.hu/netbasic/lista.bas/ip |
| Adott hónap adatai: |
http://www.....sulinet.hu/netbasic/lista.bas?200003 ahol a 2000 év 3. hónap adatai kellenek. Fontos
a bevezetõ 0! |
A programok "végterméke" megtekinthetõ a <www.felsobuki.sulinet.hu> címen, majd a szükséges lépések sorban <magyar> nyelv választás, <információk> továbblépés. Ekkor látható lesz a programok kimeneti képe.
A programok letölthetõk az
ftp://ftp.sulinet.hu/support/novell/nwweb31/statiszt.zip
vagy az
ftp://ftp.felsobuki.sulinet.hu/fnpg_sk/statiszt.zip
címrõl.