14Aug
tega HOWTO vam bo pokazal, kako se lahko na Linux ukazno vrstico razčleniti svoje apache log datoteke, da se iskanje niza poizvedbe podatke, ki jih uporabniki vnesete, da bi našli svojo spletno stran v iskalniku.Sem tudi php iskanje GUI, kot tudi za enostavno uporabo.
- 1 Uporaba awk in sed razčleniti apache log datotek za uporabnika vnesli poizvedbi
- 2 Znan Težave
- 3 Različica 2: Manj ukazno vrstico predobdelave in več predelave php
- 4 Opravilo
- 5 Tips Tricks & amp;Opozorila
- 6 Komentarji
Uporaba awk in sed razčleniti apache log datotek za uporabnika vnesli poizvedbi
Tu je surova koda, da bi dobili delo opravljeno.Upoštevajte, da $ Naslov 2 je treba nadomestiti s tem, kar ste iskali, VENDAR prostori se nadomestijo z "\ +".
Na primer: "Kako najti veliko lollypop" naj bi bilo "Kako \ + na \ + najti \ + a \ + velik \ + lollypop"
To je zato, ker nameravam poklicati funkcijo php, kjer bomzapolnijo $ TITLE2 kot boste videli pozneje.Lahko bi dal egrep
kasneje, vendar potem ne bo imel možnost, da išče tako naslov strani in poizvedb.Moj prvotni različici le iskal vprašanja, vendar sem želel funkcijo, sem lahko enostavno pokliči za dano stran in videli vsa vprašanja, ki so uporabniki vnesli v zadnjih nekaj tednih. cat /var/log/virtualmin/VisiHow.com_access_log |#Get Podatkov dostop log egrep za "(q | p) =" |#use Le zapise, ki imajo verjetno iskalnih poizvedb sed 's /% 22 / "/ g, s /% 20 / + / g, s / _ / + / g;' | #Do nekaj sprememb oblikovanje in kar je najpomembneje spremeniti vse prostoreali pa poudarja, da + egrep -I "$ TITLE2" | #search za $ Naslov 2 awk '{print $ 11}' | sed #extract le podatki iskanja 's / p = / q = / ig' | #handle Yahoo p = awk -F 'q =' '{print $ 2}' | #grab vse podatke, ki se začnejo s q = čanja 's / q = // g; e / + / / g, s /% 22 / "/ g, s /% 20/ / g; "|#reformat za človeško berljivi obliki cut -d "& amp;"-f 1 |#strip off druge parametre awk '{print $ 0 "
"} "#add
povezavo prelomov, saj načrtujemo, da izhod na spletni strani
== Naj ustvariti PHP
HTML GUI ovoj za to zdaj ==Da bi to enostavno uporabo želimo dostop do podatkov o uporabniku poizvedbe iz obrazca za iskanje spletne strani.
queries.php
& lt; title & gt; Uporabniški Vprašanja & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;
& lt; form name = "sform" method = "zaslužiti" & gt;Iskanje Naslov: & lt; input size = "80" value = "? & Lt; php echo $ _GET [" naslov "]; & gt;?"name = "naziv" type = "text" & gt;& Lt; input value = "Iskanje" type = "submit" & gt;NAMIG: Uporabite lahko delno naziva ali celo regex kot & lt; / form & gt; "Samsung * škodo."
$ title = $ _GET [ "naslov"];$ Title = preg_replace( "/ kako / i", "", $ naslov);$ Naslov 2 = str_replace( "", "\ +", $ naslov);$ Naslov 2 = str_replace( "_", "\ +", $ Naslov 2);
$ bigcmd = & lt; & lt; & lt; eof
egrep -i "(q | p) =" |#use Le zapise, ki imajo verjetno iskalnih poizvedb sed 's /% 22 / "/ g, s /% 20 / + / g, s / _ / + / g;' | #Do nekaj sprememb oblikovanje in kar je najpomembneje spremeniti vse prostoreali pa poudarja, da + egrep -i "$ Naslov 2" | #search za TITLE2 awk '{print $ 11}' | #extract le podatki za iskanje sed 's / p = / q = / ig' | #handle yahoo p = awk -F"q = ''{ print $ 2} '| #grab vse podatke, ki se začnejo s q = čanja' s / q = // g; e / + / / g, s /% 22 /" / g, s /% 20 // g, "|#reformat za človeško berljivi obliki cut -d "& amp;"-f 1 |#strip off druge parametre awk '{print $ 0 ""} "#add
povezavo prelomov, saj načrtujemo, da izhod na spletni strani
EOF;
če "{
print Iskanje" $ naslovom "..."( $ title = "!)";print "tekoči teden. ..";print `cat /var/log/virtualmin/visihow.com_access_log |#Get Podatki iz dostopa dnevnika $ bigcmd `;// Podpiramo p = preveč, ker yahoo uporablja, da. .. čudno raca lol za( $ i = 1; $ i & lt; 6; $ i ++){ print "
$ i TEDEN( S) pred
";tiskanje `Ukaza zcat /var/log/virtualmin/visihow.com_access_log.$i.gz |#Get Podatki iz dostopa dnevnika $ bigcmd `;}
} & gt?;
& lt; / EOF
Znan Težave
grep je pobral evidenco s podatki napotiteljev tako se vrača neželene zapise.Na primer, če nekdo išče "iPhone" in uporabnik je na strani iPhone nato kliknili iti Samsung stran, ta koda pobere iPhone od napotiteljem in tako vključuje tudi tiste podatke, ki jih ne bi smel.Delam na različico 2, ki pa je veliko več in bo popraviti to napako s premikanjem veliko predobdelavo ukazno vrstico v php.Koda bo bolj topi, vendar pa bo veliko bolj uporabne in točne podatke.
Različica 2: Manj ukazno vrstico predobdelave in več predelave php
Ta različica ima naslednje prednosti / slabosti:
- Manj ukazno vrstico predobdelava pomeni več kodo
- več php pomeni večji nadzor in ima
- Neupoštevanje več zahtev podvojene iz istega ip
- grofov več iskanj, namesto da bi jim uvrstitev večkrat
- Prikaži trending informacije s prikazom tedenske vsote
- izhod jev pomične Divs za enostavno pregledovanje priljubljenih straneh
- razporejene po dolžini poizvedb v višini, ki je približno pomeni bolj obiskane strani kažejo prvi
- malo hitro in umazano javascript & amp;css, da bi Divs samodejno razširi za podroben ogled
& lt; title & gt; poizvedb uporabnikov & lt; / naslov & gt;& Lt; meta name = "robots" content = "noindex" & gt;
& lt; form name = "sform" method = "zaslužiti" & gt;Iskanje Naslov: & lt; input size = "80" value = "& lt; php
če( strlen( $ _ GET [" naslov "]) & gt; 0){
echo $ _GET [" naslov "];
} else{
echo "*"; & lt; br = "" type = "text" & gt;} & gt;? "name = "naslov" / & gt;& Lt; input value = "Iskanje" type = "submit" & gt;
NAMIG: Enter * videti vse.Uporabite lahko delno naziva ali celo regularnim izrazom, kot je "Samsung * škoda." & Lt; / form & gt;
sortbylen( $ a, $ b){
vrnitev strlen( $ b) -strlen( $ a);}
$ title = $ _GET [ "naslov"];$ Title = preg_replace( "/ kako / i", "", $ naslov);$ Naslov 2 = str_replace( "", "\ +", $ naslov);$ Naslov 2 = str_replace( "_", "\ +", $ Naslov 2);
$ bigcmd = & lt; & lt; & lt; eof
egrep -i "(q | p) =" |#use Le zapise, ki imajo verjetno iskalnih poizvedb sed 's /% 22 / "/ g, s /% 20 / + / g, s / _ / + / g;' | #Do nekaj sprememb oblikovanje in kar je najpomembneje spremeniti vse prostoreali pa poudarja, da + awk '{print $ 1 "" $ 7 "" $ 11} | egrep -i "$ Naslov 2" #search za TITLE2EOF;
if( $ title = "!"){
print "Iskanje" $ naslovom "..." za( $ i = 0; $ i & lt; 6; $ i ++){ if( $ i == 0){ $ searchlogdata = `cat /var/log/virtualmin/visihow.com_access_log | $ bigcmd`;} else{ $ searchlogdata = 'Ukaza zcat /var/log/virtualmin/visihow.com_access_log.$i.gz | $ bigcmd`;} $ searchlogarray = eksplodira( "\ n", $ searchlogdata); foreach( $ searchlogarray kot $ sdata){ $ logparts = eksplodira( "", $ sdata); $ ip = $ logparts [0]; $ url = $ logparts[1]; preg_match( "/( q | p) =( *).?«( \ & amp; |? $) / ", $ logparts [2], $ ujema);$ Ss = urldecode( $ tekme [2]);$ Ss = str_replace( "+", "", $ ss);if( (strlen( Obrezovanje( $ ss)) & gt; 3) & amp; & amp;( preg_match( "# http \: \ / \ / # i", $ ss))!){ // zadrževanje url iz iskanj straniif( ($ ip = $ lip) ||( $ ss = $ LSS)!){ $ lip = $ ip;$ LSS = $ ss;$ Ssdata [ "$ url"] = "$ ss |.";}}} Uasort( $ niz, sortbylen ");foreach( $ ssdata kot $ tipka = & gt; $ vrednost){ $ Sarr = eksplodira( "|", $ vrednost);foreach( $ Sarr kot $ i){ if( strlen( $ i) & gt; 0) $ s2 [$ i] ++;} Arsort( $ s2);foreach( $ s2 kot $ kljuc2 = & gt; $ VAL2){ $ urldata [$ ključ] [$ i] = "$ VAL2: $ kljuc2".$ STOT [$ ključ] [$ i] + = $ VAL2;} Nevezanega( $ s2);} Nevezanega( $ ssdata);} Foreach( $ urldata kot $ url = & gt; $ weekdata){ print " & lt; a target =" _ blank "href =" $ url «& gt; $ url & lt; / a & gt;
";$ Wk = 0;... Foreach( $ weekdata kot $ teden){ print "
" $ teden ++ "TEDEN( S) AGO: Skupaj iskanj =" $ STOT [$ url] [$ wk-1] "
".print "& lt; div onmouseover =" this.style.height = 500 "onmouseout =" this.style.height = 100 "& lt; br =" "& gt; & lt; / div & gt; style =" širina: 800px; višina: 100px; meja: 1px solid siva; overflow: pomaknite '& gt; $ teden ";}}
} & gt?;
& lt; / EOF
Opravilo
Razvrsti po dolžini poizvedbe kot sekundarni vrste, z več poizvedb prvi
to je to.Rad bi slišal vaše izkušnje s to kodo ali predloge za izboljšave.
Tips Tricks & amp;Opozorila
- Opomba: Podpiram p = kot dobro in standard q = saj Yahoo čemer je čudno raca je uporablja p =
- Version 2 php je bolj zapleten in sem kodiranje hitro, nekaj spremenljivkimena smo izbrali slabo.prosim, ne pritožujejo kot proste kode.Toda, če želite, da to popravimo in ga dokumentirati in jo dodajte v wikiju, kot različici 3, da bi bilo fantastično:) PAY IT NAPREJ!
- Če imate težave s katero od teh korakov, vprašam za dodatno pomoč, ali delovno mesto v oddelku komentarji spodaj.
Komentarji
| Daniel Predstavljen Avtor 69 člankov Začetek 2.601 člena urejanj 24,290 točke |
Daniel je izrazit avtor z VisiHow.Daniel je dosegla raven "poročnik" s 24,290 točkami.Daniel se je začela 69 člankov in je 2.601 članek spremembe.17,578 ljudje berejo prispevke članek Daniel je. |
Daniel : | Pozdravljeni, moje ime je Daniel. |
Daniel : | Lahko vam pomaga z vašo težavo o "Preprosto razčleniti / Vsebina iskanja nizov spletno stran je od apache hlodov uporabo php awk in pripomočke sed linux ukazno vrstico"? |