14Aug
ez a HOGYAN megmutatja, hogyan kell egyszerűen a Linux parancssor elemezni az Apache naplófájlok, hogy a keresett szöveget keresett adat, hogy a felhasználók írja, hogy megtalálják a weboldal egy keresőprogram.Én is egy php keresés GUI valamint az egyszerű kezelhetőség érdekében.
- 1 használata awk és a sed elemezni apache log fájlokat a felhasználó beírt keresési lekérdezések
- 2 Ismert problémák
- 3 Version 2: Kevesebb parancssor előfeldolgozás és php feldolgozó
- 4 ToDo
- 5 tippek trükkök & amp;Figyelmeztetések
- 6 hozzászólás
használata awk és a sed elemezni apache log fájlokat a felhasználó beírt keresési lekérdezések
Itt nyers kódot kap a munkát elvégezni.Jegyezzük meg, hogy $ title2 kell cserélni az, amit keres, de terek helyén "\ +".
Például: "Hogyan talál egy nagy lollypop" lenne "Hogyan \ + a \ + találni \ + a \ + nagy \ + lollypop"
Ez azért van, mert azt tervezem, hogy hívja egy php függvény, ahol énnépességnövekedés $ title2 mint később látni fogjuk.Azt volna a egrep
később, de akkor nem azt a lehetőséget keres mindkét oldal címét és a lekérdezések.Az eredeti változat most keresett lekérdezéseket, de szerettem volna egy funkciója Én könnyen hívni az adott oldalt, és az összes lekérdezést, hogy a felhasználók gépelt az elmúlt hetekben. macska /var/log/virtualmin/VisiHow.com_access_log |#Get Adatokat a hozzáférési napló egrep "(q | p) =" |#use Csak azok a rekordok, hogy valószínűleg keresőkifejezések sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do néhány formázási módosításokat, és ami a legfontosabb változtatni terekvagy aláhúzással + egrep -I "$ title2" | #search a $ title2 awk '{print $ 11}' | #extract csak a keresési adatok sed 's / p = / q = / ig' | #handle Yahoo p = awk -F 'q =' '{print $ 2}' | #grab összes adatot tól q = sed 's / q = // g; s / + / / g; s /% 22 / "/ g; s /% 20/ / g; '|#reformat az ember által olvasható formátumban cut -d "& amp;"-f 1 |#strip ki más paraméterek awk '{print $ 0 "
"}' #add
kapcsolat szünetek, mert azt tervezi, hogy a kimenetet egy weboldal
== Hozzunk létre egy PHP
HTML GUI wrapper erre most ==Ahhoz, hogy ez könnyen használati szeretnénk elérni a felhasználói lekérdezés adatokat egy weboldal keresési forma.
queries.php
& lt; title & gt; Felhasználói lekérdezések & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;
& lt; form name = "sform" method = "get" & gt;Keresés cím: & lt; input size = "80" value = "& lt;? Php echo $ _GET [ 'title'];? & Gt;"name = "title" type = "text" & gt;& Lt; input value = "Keresés" type = "submit" & gt;TIPP: Használhatja részleges címet, vagy akár a regex, mint a "Samsung. * Kár" & lt; / form & gt;
$ title = $ _GET [ 'title'];$ Title = preg_replace( "/ hogyan / i", "", $ title);$ Title2 = str_replace( "", "\ +", $ title);$ Title2 = str_replace( "_", "\ +", $ title2);
$ bigcmd = & lt; & lt; & lt; EOF
egrep -i "(q | p) =" |#use Csak azok a rekordok, hogy valószínűleg keresőkifejezések sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do néhány formázási módosításokat, és ami a legfontosabb változtatni terekvagy aláhúzással + egrep -i "$ title2" | #search az title2 awk '{print $ 11}' | #extract csak a keresési adatok sed 's / p = / q = / ig' | #handle yahoo p = awk -F'q =' '{print $ 2}' | #grab összes adatot tól q = sed 's / q = // g; s / + / / g; s /% 22 / "/ g; s /% 20 // g; '|#reformat az ember által olvasható formátumban cut -d "& amp;"-f 1 |#strip ki más paraméterek awk '{print $ 0 ""}' #add
kapcsolat szünetek, mert azt tervezi, hogy a kimenetet egy weboldal
EOF;
if( $ title! = ""){ Print
"Keresés:" $ title "...";print "aktuális hét. ..";print `cat /var/log/virtualmin/visihow.com_access_log |#Get Adatokat a hozzáférési napló $ bigcmd `;// Támogatjuk p = túl, mert yahoo használja, hogy. .. furcsa kacsa lol for( $ i = 1; $ i & lt; 6; $ i ++){ print "$ i
hét( S) AGO
";print 'zcat /var/log/virtualmin/visihow.com_access_log.$i.gz |#Get Adatokat a hozzáférési napló $ bigcmd `;}}
? & Gt;
& lt; / EOF
Ismert problémák
A grep felvette rekordok hivatkozási adatokat, így visszatér a nem kívánt rekordokat.Például, ha valaki rákeres a "iPhone" és a felhasználó volt egy iPhone oldalt, majd kattintott menni a Samsung oldalon ezt a kódot felveszi az iPhone az ajánló és így magában foglalja, hogy az adatok, amelyeket nem kellene.Én dolgozom 2-es verziója, amely nem sokkal több, és javítja a hibát mozgatásával sok a parancssor előfeldolgozó a php.A kód lesz tompaszög, de ad sokkal hasznos és pontos adatokat.
Version 2: Kevesebb parancssor előfeldolgozás és php feldolgozó
Ez a verzió a következő előnyök / hátrányok:
- Kevesebb parancssor előfeldolgozás ez hosszabb kódot
- több php többet jelent ellenőrzési és funkciók
- Figyelmen kívül hagyja a több példányban lévő azonos ip
- számít több keresés helyett felsoroljuk őket többször
- mutatása trend információk megjelenítésével heti összesítés
- kimeneta görgethető divs egyszerű megtekintését a népszerű oldalak
- Mi szerint legyen sorolva keresett hosszúságú összesen, ami körülbelül azt jelenti, több népszerű oldalakon első
- Egy kis gyors és piszkos javascript & amp;css, hogy a divs automatikus nagyítás részletes megtekintésére
& lt; title & gt; Felhasználói lekérdezések & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;
& lt; form name = "sform" method = "get" & gt;Keresés cím: & lt; input size = "80" value = "& lt;? Php
if( strlen( $ _ GET [ 'title']) & gt; 0){
echo $ _GET [ 'title'];
} else{
echo "*"; & lt; br = "" type = "text" & gt;}? & gt; "name = "title" / & gt;& Lt; input value = "Keresés" type = "submit" & gt;
TIPP: Írja * látni mindent.Használhatja részleges címet, vagy akár a regex, mint a "Samsung. * Kár" & lt; / form & gt;
funkció sortbylen( $ a, $ b){
visszatérő strlen( $ b) -strlen( $ a);}
$ title = $ _GET [ 'title'];$ Title = preg_replace( "/ hogyan / i", "", $ title);$ Title2 = str_replace( "", "\ +", $ title);$ Title2 = str_replace( "_", "\ +", $ title2);
$ bigcmd = & lt; & lt; & lt; EOF
egrep -i "(q | p) =" |#use Csak azok a rekordok, hogy valószínűleg keresőkifejezések sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do néhány formázási módosításokat, és ami a legfontosabb változtatni terekvagy aláhúzással + awk '{print $ 1 "" 7 $ "" $ 11}' | egrep -i "$ title2" #search az title2EOF;
if( $ title! = ""){
print "Keresés:" $ title "..."; for( $ i = 0; $ i & lt; 6; $ i ++){ if( $ i == 0){ $ searchlogdata = `cat /var/log/virtualmin/visihow.com_access_log | $ bigcmd`;} else{ $ searchlogdata =` zcat /var/log/virtualmin/visihow.com_access_log.$i.gz | $ bigcmd`;} $ searchlogarray = explode( "\ n", $ searchlogdata) foreach( $ searchlogarray mint $ Sdata){ $ logparts = explode( "", $ Sdata); $ ip = $ logparts [0]; $ url = $ logparts[1]; preg_match( "/( q | p) =( . *?)?"( \ & amp; | $) / ", $ logparts [2], $ illeszkedik);$ Ss = urldecode( $ matches [2]);$ Ss = str_replace( "+", "", $ ss);if( (strlen( trim( $ ss)) & gt; 3) & amp; & amp;( ! preg_match( "# http \: \ / \ / # i", $ ss))){ // távol tartani url-re webhelykereséseketif( ($ ip! = $ ajak) ||( $ ss! = $ ip)){ $ ajak = $ ip;$ Ip = $ ss;$ Ssdata [ "$ url"]. = "$ Ss |";}}} Uasort( $ array "sortbylen ');foreach( $ ssdata as $ kulcs = & gt; $ value){ $ Sarr = explode( "|", $ value);foreach( $ Sarr mint $ s){ if( strlen( $ s) & gt; 0) $ s2 [$ s] ++;} Arsort( $ s2);foreach( $ s2 mint $ kulcs2 = & gt; $ ért2){ $ urldata [$ kulcs] [$ i]. = "$ ért2: $ kulcs2";$ STOT [$ kulcs] [$ i] + = $ ért2;} Unset( $ s2);} Unset( $ ssdata);} Foreach( $ urldata mint $ url = & gt; $ weekdata){ print " & lt; a target =" _ blank "href =" $ url "& gt; $ url & lt; / a & gt;
";$ Wk = 0;foreach( $ weekdata $ -os heti){ print "
". $ wk ++. "HÉT( S) AGO: Összes keresések =". $ STOT [$ url] [$ WK-1]. "
";print "& lt; div onmouseover =" this.style.height = 500 "onmouseout =" this.style.height = 100 "& lt; br =" "& gt; & lt; / div & gt; style =" width: 800px; height: 100px; border: 1px solid szürke túlcsordulás: scroll "& gt; $ héten";}}}
? & Gt;
& lt; / EOF
ToDo
Rendezés lekérdezés hossza másodlagos rendezés, hosszabb lekérdezések első
Ennyi.Szeretném hallani a tapasztalatokat ezzel a kóddal, vagy javaslatokat a fejlesztésre.
Tippek trükkök & amp;Figyelmeztetések
- Megjegyzés: Támogatom p = is, és a standard q = mert a Yahoo, hogy a páratlan kacsa ez használ p =
- Version 2 php bonyolultabb és én kódolási gyors, így egyes változókneveket választottak rosszul.ne panaszkodnak, mint a szabad kódot.De ha azt akarjuk, hogy rögzítse, és dokumentáljuk, és add meg a wiki a 3-as verzió, hogy fantasztikus lenne:) kifizetni előre!
- Ha problémája van ezekkel lépést, egy kérdést több segítséget, vagy írjon a hozzászólások szakaszt alább.
hozzászólás
| Daniel Kiemelt Szerző 69 cikk lépések 2601 cikk Módosítások 24290 pontok |
Daniel egy kiemelt szerzője VisiHow.Daniel elérte a szintet "hadnagy" a 24290 pont.Daniel elkezdte 69. cikk és készült 2601 cikket szerkesztést.17578 ember olvasta Daniel cikket hozzájárulást. |
Daniel : | Hi, a nevem Daniel. |
Daniel : | Segíthetek a problémáját a "Könnyen elemez / keresni egy weboldal keresésnek húrok apache naplók segítségével php awk és a sed Linux parancssori segédprogramok"? |