Készítsen statisztikák a site a kezüket

Szinte minden weboldal tulajdonos egy ponton van egy vágy, hogy megtudja, néhány statisztikát a látogatók. Hány látogató az oldalon néz, meddig vannak az oldalon, mely oldalakat néz, honnan jönnek, stb És elvileg az ilyen információ elég különböző ingyenes (és nem) a szolgáltatások típusa vagy top.mail.ru www.spylog.com, valamint egy webszervernaplófájlban elemző. De mindezen szolgáltatásokat, és a szolgáltatások számos hiányosságot - például az adatvesztést hiánya miatt az online szolgáltatás vagy a zár a felhasználói képek a böngészőjében vagy webszerver redundancia log fájlokat, és lehetetlenné teszi a többé-kevésbé határozottan egy elemzés naplófájlok, hogy meghatározza a felhasználói munkamenet. És különben is, ők egyáltalán nem képes választ adni néhány konkrét kérdést, például azt a kérdést „megmutatni a felhasználók listáját, akik jöttek a keresőprogramok és nyilvántartott csatlakozott az ülésen.” Vagy „az összes felhasználó-specifikus munkamenetben az egész idő alatt.” Amely fokozatosan vezet létrehozásának gondolatát saját naplózó rendszer és egy sor jelentések megszerezni a szükséges statisztikákat.

Egy bizonyos ponton, kaptam egy hasonló probléma, és előttem. Egy komoly oldal átalakítása ügyfél kért statisztikákat figyelembe véve a látogatókat a keresők szempontjából azok a regisztráció az oldalon, és készítés, mondjuk, vásárlás. És ezen kívül az ügyfél nagyon érdekelt a pillanatokban, hogy milyen jól és gyorsan a keresők sétálni a helyszínen, és tegye azt az oldal index. Ennek megfelelően kellett összpontosítani rendszer létrehozásával fakitermelés helyszíni látogatások.

adatbázis

Készítsen statisztikák a site a kezüket

Egy kis magyarázat - mint már korábban említettük, a jelentések listáját az akciót én a fontos szerepet, amelyet a regisztrált felhasználók. Mi késztetett, hogy adjunk a felhasználói azonosító oszlop, amely rögzítésre kerül, ha a felhasználó nevet bejelentkezett hitelesített kérelmet. És bár én például szívesebben használják azonosítani a felhasználó egész (identity kulcs ill. Base táblázatot) a Session táblázatban ez a mező varchar maximális kompatibilitás. Amellett, hogy a munkamenet információkat tárolnak az első és utolsó oldalának az ülés, valamint a dátum a kezdete és vége az ülés a kényelem jelentés építve a belépési / kilépési pont és az időt. De minden kérést I oldalon tárolja az információt arról, hogy a felhasználó hitelesítve, és azt, hogy a kérelem postback.

a kettő nem a legbonyolultabb eljárások rögzítésére használt zaposov az adatbázisban:

p_SessionStart eljárás, úgy tűnik számomra, nem igényel további magyarázatot, mivel az eljárás p_DoRequest egy rövid megjegyzést, hogy amellett, hogy a fakitermelés a kérelem az oldalra, csak megváltoztatja bizonyos értékeit az ülésen.

Ennél amíg a munka az adatbázis teljes és elkezdhetjük kódot írni naplózza a felhasználók jönnek a helyszínre.

naplózás modul

A szoftver része a rendszer a fakitermelés oldalak látogatók úgy döntöttem, hogy egy HTTP-modul formájában. Feltétel nyilvánvalóak - naplózó rendszert kell működtetni a váltás nélkül a kódját, csak kapcsolja be, és a folyamat összes kérelmet asp.net. Ismét, ez a modul kód egyszerűen csúnya és veszi az összeg közel száz sornyi kódot.

Mivel minden munkát a beállítást a modul felhasználásával kell elvégezni a konfigurációs fájlban, akkor a legjobb megoldás erre az, hogy hozzon létre egy szakaszt a konfigurációs fájl a modult. Modul munkájuk van egy stringet az adatbázis-kapcsolat, a helyszín neve (opcionális), és a tárolási helyét a felhasználó session ID (vagy asp.net session cookie, süti az alapértelmezés). Ennek megfelelően, a szerkezet a kód modult:

Az ugyanazon részén a konfigurációs fájlban az osztályt, amely megvalósítja az interfész System.Configuration.IConfigurationSectionHandler. Ez az interfész tartalmaz egyetlen módszer létrehozása, amely visszatér az objektumot. Nem leszek sokáig megmondani, hogyan és mit kell tenni (ez olvasható MSDN) és csak ad az osztály kód:

Mint látható, semmi bonyolult a fenti kód nem - ő csak beolvassa a paramétereket a XMLNode osztály és feltölti a modul paramétereit. Ahhoz, hogy adja a fenti létrehozott egy szakaszt a konfigurációs fájlban a részben Most, hogy elég hozzá a következő sorokat:

És, hogy ezeket a paramétereket az osztály kódját az alábbi sort:

SiteStatsBLL.Request () módszerrel, hogy jelentkezzen a felhasználói lekérdezés, ami viszont, ha szükséges volt, SiteStatsBLL.SessionStart () metódus, hogy egy új munkamenetet. Mindkét módszer csak hívja a megfelelő tárolt eljárásokat.

SiteStatsBLL.Request () metódus I híváskezelő HttpApplication eseményeket. PostRequestHandlerExecute. Abban az időben az esemény kiváltó stnanitsy feldolgozás befejeződött, és az oldal készen kell küldeni az ügyfélnek, de a kapcsolat még mindig suschetvuet (mi is a lehetőséget, hogy mentse a session a sessionid). És az összes HTTP-modul célja az, hogy amikor ez az esemény bekövetkezik, hogy hatására a fakitermelés kérés módszer:

Minden. létrehozásának folyamatát lekérdezések naplózása modul tölti az oldalon. Most, hogy megkezdjék a naplózás néhány hely ahhoz, hogy átírják a kapott összeállítás a bin könyvtárban a helyszínen, valamint hogy módosítsa a web.config fájl sleduyushie.

1. Adjon leírást szakaszban szakasz :

2. Ugyanebben a szakaszban adja hozzá a nagyon részén Webhelystatisztikák:

3. szakasz adjunk hozzá egy leírást a modul:

A munkát, és most az összes kérés asp.net lesz bejelentkezve. De mielőtt végén ezt a cikket, szeretnék beszélni néhány további manipuláció a tárolt adatokat.

Keresés robotok és Ajánlók

Annak érdekében, hogy ne terheljék az olvasó hosszas vitákat, amelyek vannak robotok és egy robot, aki jobb adok egy rövid listát maszkok vitt yuzeragentov robotok:

Az utolsó sorban a listán természetesen elég radikális, de ezek a robotok, mint az emberi gondolat spawn - a jó, hogy bár ezek gyakran elismert őszinte, akkor botok :).

Amellett, hogy kezelése „nem felhasználó” hívásokat is kell tennie a feldolgozás felkérések - mi site / érkezett a látogató egy kereső, és mit keresett szavakat használta abban az esetben jött egy kereső. És itt megint nem tud anélkül, hogy további táblák - a keresők listájához és a hivatkozó webhelyek listájára. Nos, amellett van egy táblázatban tárolja a keresési kifejezéseket. És természetesen az összes ezeket a táblákat társított Session asztalra.

Asztalok weboldalak és a keresési kifejezések semmi önmagában nem jelent különleges - ezek közönséges könyvtárak, amelyben az új érték lesz hozzá szükség.

További érdekes táblázat a keresők - benne kivéve a nevét a kereső is kell információt tárol a maszk neve a helyszínen, valamint a tájékoztatás, ha a string áttétel tárolt keresési kifejezést. Jellemzően a keresett kifejezést tartalmazó adott URL paraméter, de ott is külön „haladó” egyének, dugta be az URL-szerkezet könyvtárak. De a háttérben öltözött AOL, abban az esetben a keresést a honlap továbbítására egy keresési kifejezést a query string titkosítva van. Szerencsére, bár egy másik paraméter, amely lehetővé teszi, hogy racionalizálja a beépítése keresési kifejezéseket.

Az alábbiakban egy támpontként a keresőoldalak által létrehozott statisztikai rendszer.

Paraméter keresési kifejezés

Felfegyverkezve a fenti, akkor készen áll, hogy végre a különböző számviteli megközelítések robotok és a kezelés előtti áttétel látogatók.

bővítő modul

Kivéve, hogy a fent említett 4 új táblázatok (Sites, Botok, SearchEngines és kulcsszavak) változások csak: Session asztal, ami hozzá 4 területen a linket hozzá egy táblázatot:

Készítsen statisztikák a site a kezüket

Nos, és ennek megfelelően változik az eljárást az ülés kezdete:

Tény, hogy töltse további információ a robotok, áttételek, és a keresők is 2 módon -, amikor a bejegyzés bekerül az adatbázisba, vagy egy külön tárolt eljárást, akkor a feldolgozást már tárolt adatbázis. Ennek megfelelően, a második esetben a változás a tárolt eljárás, nem kell hozzá egy rekord az ülés. És mivel így egy kicsit könnyebb, én először mutatják annak végrehajtását.
Feldolgozása a adatbázisnaplókat

Mint már említettem, ez az eljárás kell bánni a már beírt adatokat. Volt ez a bevitt adatokat valamilyen elmúlt időszakban (pontosabban - az utolsó óra). Ennek megfelelően, az egyik a paraméterek Ennek az eljárásnak az a dátum / időpont, amikor az adatokat fel kell dolgozni. És különben is, ez is úgy egy paramétert, hogyan kell kezelni a felvétel a robotok - csatlakozni, vagy törölni

rekordok feldolgozását robotok egyszerű primitivizmus. Ha elment egy naplót hívások robotok 2 egyszerű frissítés egy csomó táblázatok és Session botok (második kérelem van szükség annak érdekében, hogy kezelni a „kiváló” robotok, kegyesen méltóztatott mondani maguknak, hogy még mindig robotok). A tisztítás során a bázis rekordok látogatások robotok - legalább két egyszerű törlési parancsot.

Nem több, komplexitás és jelentése kérés, hogy meghatározzák a bejutás a kereső

Nos, az utóbbi időben - a kiválasztás keresési kéréseket plébániák már találtak a keresők. Ehhez csak még, és szükség van, hogy a területen KeywordMask - minden, ami megtalálható a vonal közötti részstringjét ezen a területen, és a szimbólum (Vagy amíg a sor végére, ha a karakter nem több) tartják a keresési kifejezést. Ugyanakkor, amint azt korábban említettük, a lekérdezések keresési kifejezéseket nem osztott paraméterek nem veszik figyelembe (lekérdezések a keresőprogramok, mint KeywordMask értékű /).

Minden feldolgozása rönk a szerver oldalon befejeződött. Most már elég ok csak az, hogy az írásbeli, mint például óránként egyszer, és a naplók lesz használatra kész.

De nem mindig kényelmes lehet. Ha szüksége van egy valós idejű rendszer statisztikák, jelentések, amelyek meg kell adni a megfelelő adatokat bármely időszakban, akkor nem nélkülözheti szinkronizáló rekordokat kezelésük naplók. És ebben az esetben, akkor hasznos lehet az eltávolítása ezen logika kódot.

Korszerűsítése a kódot

Ehhez elvileg végrehajtani ugyanazt a logikát kiosztási kéréseket keresők, áttétel plébániákon és plébániák a keresők már korábban írt modult.

A plug-in konfigurációs hozzá 2 további paramétert - ParseAddData adja meg a tényt, kiegészítő szoftver feldolgozza a felhasználói kérések és PersistBots adja meg, hogy menteni az adatbázis lekérdezések robotok. Ehhez hozzá SiteStatsSettings osztály is sor

De a módszer kód létrehozása SiteStatsConfigHandler osztály rendre hozzá a inicializálás

Most, a konfiguráció a modulon a web.config fájl a következőképpen néz ki.

Ahhoz, hogy a keresés és személyazonosságának megállapítása robotok és a keresőprogramok a kódot SiteStatsBLL hozzáadunk 2 statikus mező SortedList típusú tárolni a sablonok listáját, és a robotok a keresőoldalak és a statikus konstruktor kitölteni ezeket a listákat. Ezen túlmenően, a kényelem találni ezeket a listákat megtartja nem maszkot a keresést, és azonnal hozzon létre megfelelő esetekben Regex osztályt. És mivel a keresés folyik, hogy az első talált érték nem szükséges felejtsük el, hogy a sorrendben helyezi maszkok fontos (wildcard kereső „bot” kell elvégezni az utolsó kör)

A módszer kód SessionStart hozzá egység azonosságának meghatározásához a robot és a kereső, valamint a keresési kifejezéseket, és áttételt oldalon

Vegye figyelembe, hogy ha a rendszer úgy van kialakítva, hogy figyelmen kívül hagyja kéréseket keresők, akkor ez a módszer visszaadja -1. Ennek megfelelően egy további eljárás kér kell tenni az értékek sessionId felvétel előtt kérésre tájékoztatást az adatbázis (közvetlenül a döntést követő szakasz sessionid).

És végül, ugyanazzal a módszerrel SessionStart kódot kell megadnia, hogy továbbítsa a talált értékeket, ha szükséges, egy tárolt eljárás

Minden most dolgozik létrehozását naplózási modul pontosan kitöltött :). A kísérő cikket az archívumot, megtalálja a MDF adatbázis fájlt, és a teljes forráskódot. Nos, én vagyok a következő cikkben megpróbálom életet adjunk a projekt és leírják a létrehozása egy sor jelentések kedvenc kezelésére és / vagy az ügyfelek a képek és táblázatok segítségével Reporting Services.

Kapcsolódó cikkek