Aproape fiecare proprietar de site-ul la un moment dat există o dorință de a afla unele statistici despre vizitatorii lor. Cât de mulți vizitatori la site-ul arată, cât timp acestea sunt pe site-ul, care arata pagini, în cazul în care acestea provin, etc. Și, în principiu, să furnizeze astfel de informații au suficient varietate de liber (și nu) tipul de servicii sau de top.mail.ru www.spylog.com, precum și un jurnal parser server web. Dar toate aceste servicii, precum și servicii au multe deficiențe - de exemplu, pierderea de informații din cauza indisponibilității serviciului online sau bloca imaginile de utilizator în fișiere browser web sau server web jurnal redundanță și imposibilitatea unei explicit mai mult sau mai puțin de o parsare de fișiere jurnal pentru a determina sesiunea utilizatorului. Și, în plus, acestea sunt complet în imposibilitatea de a oferi răspunsuri la câteva întrebări specifice, de exemplu, întrebarea „pentru a afișa o listă de utilizatori care au venit de la motoarele de căutare și înregistrate în aderarea la sesiunea.“ Sau „arată toate sesiune specifice utilizatorului pentru întreaga perioadă de timp.“ Aceasta duce treptat la ideea de a crea propriul sistem de logare și un set de rapoarte pentru a obține statisticile solicitate.
La un moment dat, am o problemă similară, și în fața mea. Dupa un client serios site-ul reproiectare a solicitat statistici referitoare ținând cont de vizitatori din motoarele de căutare în ceea ce privește înregistrarea lor pe site-ul și de a face, să zicem, la cumpărături. Și, în plus, clientul este foarte interesat în momentele de cât de bine și rapid motoarele de căutare vor merge în jurul valorii de site-ul și pune-l în indexul paginii. Prin urmare, a trebuit să se concentreze pe crearea unui sistem de vizite la fața locului de logare.
bază de date
O explicație pic - după cum am menționat anterior în lista de rapoarte pentru vizitatori am rolul important jucat de utilizatori înregistrați. Ceea ce ma determinat să adăugați coloana IDutilizator, care vor fi înregistrate în cazul în care numele de utilizator este conectat cerere autentificat. Și, deși eu, de exemplu, preferă să utilizeze pentru a identifica întreg utilizatorului (tabelul de bază de identitate cheie resp.) În tabelul sesiune acest câmp este VARCHAR pentru compatibilitate maximă. În plus față de informațiile sesiunii sunt stocate pe prima și ultima pagini ale sesiunii, precum și data la începutul și sfârșitul sesiunii pentru comoditatea de construcție raport cu privire la punctele de intrare / ieșire și timp. Dar, cu fiecare cerere I stochează informația despre pagina dacă utilizatorul este autentificat, și dacă postback cerere.
cei doi nu sunt procedurile cele mai complexe sunt folosite pentru a înregistra zaposov în baza de date:
Procedura de p_SessionStart, mi se pare, nu are nevoie de nici o explicație suplimentară, ca și pentru procedura de p_DoRequest face o scurtă observație, că, pe lângă exploatarea forestieră a cererii la pagina, se schimba doar unele valori ale sesiunii.
La aceasta până când lucrarea pe baza de date este completă și puteți începe scrierea de cod pentru conectarea utilizatorilor vin la site-ul.
modul de logare
Porțiunea de software a sistemului de site-uri de logare vizite am decis să fac un formular modul HTTP. Cerințe preliminare sunt evidente - sistem de logare trebuie să fie acționată de pe site-ul fără a schimba codul lor, acordează și să proceseze toate cererile asp.net. Din nou, acest cod modul este simplu de urâțenie și ia în valoare de aproape o sută de linii de cod.
Din moment ce toate lucrările de stabilire a modulului se va realiza utilizând fișierul de configurare, apoi cea mai bună soluție pentru acest lucru este de a crea o secțiune în fișierul de configurare pentru modulul. Modul pentru munca lor, au nevoie de un șir de caractere pentru conexiunea bazei de date, numele site-ului (opțional) și locul de depozitare a ID-ul sesiunii utilizatorului (sau un cookie de sesiune asp.net, cookie-uri implicit). Prin urmare, structura modulului de cod:
Aceeași secțiune a fișierului de configurare sunt clasa care implementează System.Configuration.IConfigurationSectionHandler de interfață. Această interfață conține o singură metodă Creați, care ar trebui să returneze obiectul. Nu va fi mult timp pentru a spune cum și ce trebuie făcut (acesta poate fi citit în MSDN) și vă dau doar codul de clasă:
Dupa cum se poate vedea nimic complicat în codul de mai sus nu este - el citește doar parametrii din clasa XMLNode și încarcă parametrii modulului. Pentru a adăuga creat o secțiune de mai sus în fișierul de configurare în secțiunea
Și pentru a obține acești parametri în codul de clasă se poate utiliza următoarea linie de cod:
SiteStatsBLL.Request () metoda este utilizată pentru a vă conecta interogarea utilizatorului, care, la rândul său, dacă este necesar, este SiteStatsBLL.SessionStart () metoda pentru a începe o nouă sesiune. Ambele metode de a apela numai procedurile corespunzătoare stocate.
SiteStatsBLL.Request () metoda eu numesc evenimente handler HttpApplication. PostRequestHandlerExecute. La momentul evenimentului care declanșează procesarea stnanitsy este completă, iar pagina este gata pentru a fi trimis la client, dar sesiunea este încă suschetvuet (avem, de asemenea, opțiunea de a salva sesiunea din sessionId). Și tot scopul modulului HTTP este că, atunci când acest eveniment are loc pentru a determina metoda solicitării de logare:
Toate. procesul de creare a modulului de interogări completat de site-ul de logare. Acum, pentru a începe păstrarea jurnalele pentru unele site-ul suficient pentru a rescrie ansamblul rezultat în directorul bin al site-ului și de a face modificări la sleduyushie fișierul web.config.
1. Adăugați o descriere în secțiunea secțiunea
2. În aceeași secțiune pentru a adăuga Sitestats secțiune foarte:
3. În secțiunea
Lucrarea se face și acum toate solicitările site-ului asp.net va fi inregistrata. Dar înainte de a termina acest articol, aș dori să vorbesc despre unele suplimentare de manipulare a datelor stocate.
Căutare roboți și Recomandări
Pentru a nu împovăra cititorul cu argumente lungi despre care există roboți și un robot care este corect voi da o listă scurtă de măști m-au dus roboți yuzeragentov:
Ultima linie din lista, desigur, destul de radicale, dar acești roboți ca miceliu gândirea umană - binele, că, chiar dacă acestea sunt de multe ori recunoscute ca fiind cinstit, ei Bots :).
În plus față de manipularea „non-user“ apeluri ar trebui să facă, de asemenea, prelucrarea trimiterilor - ceea ce site-ul / vizitator a venit de la un motor de căutare și ce cuvinte a folosit în cazul a venit de la un motor de căutare de căutare. Și aici, din nou, nu se poate face fără tabele suplimentare - lista motoarelor de căutare și lista de site-uri de sesizare. Ei bine, în plus, au nevoie de un tabel pentru a stoca expresiile de căutare. Și, în mod natural, toate aceste tabele sunt asociate cu masa de sesiune.
Mese pentru site-uri și expresii de căutare nu este nimic în sine nu reprezintă speciale - acestea sunt directoare obișnuite, în care vor fi adăugate noile valori după cum este necesar.
Mai interesant tabel al motoarelor de căutare - în ea, cu excepția numele motorului de căutare va trebui, de asemenea, pentru a stoca informații despre numele masca unui site, precum și informații despre locul în șirul de sesizare stocate expresie de căutare. De obicei, fraza de căutare conținute în orice parametru URL-ul special, dar există și persoane speciale „avansate“, poking in structura URL-ul de directoare. Dar, pe fondul îmbrăcat AOL, în cazul căutării de pe pagina de start care transmite o expresie de căutare în șirul de interogare este criptat. Din fericire, deși într-un alt parametru care vă permite să raționaliza încorporarea de expresii de căutare.
Mai jos este un ghid dur pentru site-urile de căutare create de sistemul statistic.
expresie de căutare Parametru
Înarmat cu toate cele de mai sus, sunteți gata să pună în aplicare o varietate de abordări contabile roboți și vizite de sesizare de pre-tratament.
modul de expansiune
Cu excepția am menționat mai sus 4 noi tabele (Site-uri, bots, motoare de căutare și cuvintele cheie) se modifică numai: tabel sesiune, care a adăugat 4 link-ul câmp pentru a adăuga un tabel:
Ei bine, în schimbare și, în consecință procedura de începerea sesiunii:
De fapt, pentru a umple informații suplimentare despre roboți, trimiteri, și motoarele de căutare pot fi de 2 feluri - la momentul intrării s-a adăugat la baza de date, sau o procedură stocată separat, prelucrarea este deja stocate în baza de date. În consecință, în al doilea caz schimbarea procedurii stocate, nu trebuie să adăugați o înregistrare a sesiunii. Și, din moment ce acest mod un pic mai ușor, voi arăta în primul rând de punerea sa în aplicare.
Prelucrarea în jurnalele de baze de date
Așa cum am menționat, această procedură ar trebui să se ocupe de datele deja introduse. Am avut aceste date introduse pentru o anumită perioadă de timp trecut (mai exact - în ultima oră). Prin urmare, unul dintre parametrii acestei proceduri este data / ora la care datele trebuie să fie procesate. Și, în plus, este nevoie, de asemenea, un parametru de modul în care să se ocupe de înregistrarea de roboți - pentru a le conecta, sau șterge
procesarea de înregistrări roboți este simplu de primitivism. Când salvați un jurnal de apeluri efectuate roboți 2 actualizare simplu de o grămadă de tabele și roboții de sesiune (este nevoie de a doua solicitare, în scopul de a gestiona roboți „restante“, gratie catadicsit să se spună că ei sunt încă roboți). Atunci când curățați baza înregistrărilor de vizite roboți - cel puțin două comenzi simple de ștergere.
Nu mai complexitate și reprezintă o cerere pentru a determina accesele la motorul de căutare
Ei bine, ultima oară - selectarea cererilor de căutare de la parohii deja găsite cu motoarele de căutare. Pentru a face acest lucru doar încă și trebuie să câmp KeywordMask - tot ceea ce va fi găsit în linia dintre substringul acestui câmp și simbolul (Sau până la sfârșitul liniei, în cazul în care personajul nu mai) este considerată o expresie de căutare. În același timp, parametrii adresei URL după cum am menționat mai devreme, interogările expresiile de căutare nu sunt alocate nu sunt luate în considerare (pentru interogări cu motoare de căutare astfel de valoare KeywordMask egală /).
Toate prelucrarea buștenilor pe partea de server este finalizată. Acum este suficient pentru a provoca numai că procedura scrisă, cum ar fi o dată pe oră, iar jurnalele vor fi gata pentru utilizare.
Dar nu întotdeauna poate fi convenabil. Dacă aveți nevoie de un timp real statistici de sistem, rapoartele de care ar trebui să dea datele corecte pentru orice perioadă, atunci nu se poate face fără sincronizarea înregistrărilor cu jurnalele lor de tratament. Și în acest caz, poate fi util în eliminarea acestui cod logica.
Modernizarea codului
Pentru a face acest lucru, în principiu, să pună în aplicare aceleași cereri de alocare logica de la motoarele de căutare, parohii și parohii sesizare cu motoare de căutare deja scrise modulul anterior.
Configurația plug-in pentru a adăuga 2 parametru suplimentar - ParseAddData pentru a specifica fapt suplimentare cererile utilizatorului software de procesare și PersistBots pentru a specifica dacă pentru a salva baza de date interogări roboți. Pentru a face acest lucru, se adaugă, de asemenea, clasa SiteStatsSettings linie
Dar, în codul metodei de creare a claselor SiteStatsConfigHandler respectiv adăuga inițializarea lor
Acum, configurația secțiunii modulului în fișierul web.config va arata ceva de genul asta.
Pentru a căuta și de a determina identitatea de roboți și motoarele de căutare în codul SiteStatsBLL adăugat 2 static tip de câmp SortedList pentru a stoca lista de template-uri, și roboți de site-uri de căutare și de un constructor static pentru a umple aceste liste. În plus, pentru comoditatea de a găsi aceste liste vor reține nu masca pentru căutare, și imediat crea instanțe corespunzătoare clasa Regex. Și pentru că căutarea este efectuată la prima valoare constatat că nu este necesar să se uite că ordinea plasarea măști importante (wildcard căutarea „bot“ ar trebui să fie efectuate în ultimul rând)
Codul metodei SessionStart adăuga o unitate pentru a determina identitatea robotului și motorul de căutare, precum și expresiile de căutare și site-ul de sesizare
Rețineți că, dacă sistemul este configurat să ignore cererile de la motoarele de căutare, atunci această metodă returnează -1. Prin urmare, într-o solicitare suplimentară metodă trebuie să fie făcută prin valori sessionId înainte de a înregistra informații, la cerere, la baza de date (imediat după secțiunea de determinare sessionId).
Și, în sfârșit, în aceeași metodă SessionStart trebuie să adăugați un cod pentru a transmite valorile găsite atunci când este necesar într-o procedură stocată
Totul este acum lucrează la crearea modulului de logare completat cu exactitate :). În articolul de însoțire în arhivă, puteți găsi fișierul bazei de date MDF si codul sursa. Ei bine, eu sunt în următorul articol voi încerca să adăugați viață la acest proiect și va descrie crearea unui set de rapoarte pentru un management favorit și / sau clienții de imagini și tabele cu ajutorul Reporting Services.