14Aug

Preprosto razčleniti / Vsebina iskanja nizov spletni strani, je od apache hlodov uporabo php awk in linije pripomočke ukaz linux sed

click fraud protection
6 delov: Uporaba awk in sed razčleniti apache log datotek za uporabniške vnesli iskalnih poizvedb znanih težav Različica 2: Manj ukazni vrstici predobdelavo in več predelave php Opravilo Tips Tricks & amp;Opozorila Komentarji

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.

bilo to v pomoč?Da |Ne |Rabim pomoč
Vsebina
  • 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
Ad

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 "\ +".

instagram viewer

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

je bilo to v pomoč?Da |Ne |Rabim pomoč

== 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."

bilo to v pomoč?Da |Ne |Rabim pomoč

$ 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;

bilo to v pomoč?Da |Ne |Rabim pomoč

č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?;

bilo to v pomoč?Da |Ne |Rabim pomoč

& 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.

bilo to v pomoč?Da |Ne |Rabim pomoč

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;

bilo to v pomoč?Da |Ne |Rabim pomoč funkcija

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 TITLE2

EOF;

bilo to koristno da | Ne | rabim pomoč
?

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?;

bilo to v pomoč?Da |Ne |Rabim pomoč

& 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

VisiHow pozdravlja vse komentarje .Če ne želite biti anonimni, registrirajte se ali se prijavite. To je brezplačno.




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.
Vprašajte Daniel
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"?
Sprejmi