14Aug
Bu NASIL kolayca Linux komut satırında kullanıcıların arama motoru web sayfanızı bulmak için yazdığınız arama dizesi sorgusu verilerini almak için apache günlük dosyalarını ayrıştırmak nasıl size gösterecektir yazın.Ben bir php arama GUI için de kolay kullanım dahil ettik.
- 1 Kullanım awk ve kullanıcı yazdığınız arama için apache günlük dosyalarını ayrıştırmak için sed sorgular yardıma ihtiyacım Sorunları
- 3 Bilinen
- 2 Versiyon 2: az komut satırı ön işleme ve daha php işleme
- 4 Yapılacaklar
- 5 İpuçları Tricks & amp;Uyarılar
- 6
Kullanım awk Yorumlar ve kullanıcı yazdığınız arama için apache günlük dosyalarını ayrıştırmak için sed
Burada işi yapmak için çiğ koddur.O $ title2 Aradığınız AMA boşluk \ "+" ile değiştirilir ne kadar yerine gerektiğini unutmayın.
Örneğin: "Nasıl büyük bir lolipop bulmak için" Ben nerede olacak bir php fonksiyonu, aramak için plan Bunun nedeni
"Nasıl \ + \ + bir \ + büyük \ + lollypop bulmak + \ için" olacağınıDaha sonra göreceğiniz gibi $ title2 doldurmak.Daha sonra egrep
koymak olabilir ama sonra sayfa başlığı ve sorguları hem arama seçeneğine sahip olmayacaktır.Benim orijinal versiyonu sadece sorguları arandı ama bir işlev kolayca belirli bir sayfa için arama ve kullanıcıların son birkaç hafta içinde yazdığınız tüm sorguları görebiliyordu istedi.kedi /var/log/virtualmin/VisiHow.com_access_log |#Get Erişim günlüğü egrep veri "(q | p) =" |muhtemelen arama sorguları sed var #use sadece kayıtları 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | bazı biçimlendirme değişikliklerini #Do ve en önemlisi tüm alanlarda değiştirmekveya + egrep -I "$ title2" için altını çizen | #extract sadece arama verilerini 's / p = / q = / ig' sed | | #search $ title2 awk için '{$ 11 yazdırmak}' #handle Yahoo p = awk -s / + / / g; s /% 22 / "/ g; s /% 20 | '#grab q = sed ile başlayan tüm verileri' s / q = // g F 'q =' '{print $ 2}/ / g; '|insan okunabilir formatta kesim -d için #reformat "& amp;"-f 1 |Biz
== şimdi biz bir web sayfası arama formundan kullanıcı sorgu verilere erişmek istediğiniz bu kolayca kullanımını sağlamak için ==
bunun için bir PHP
HTML GUI sarıcı yaratalım yardıma ihtiyacım var.queries.php
& lt; title & gt; Kullanıcı Sorgular & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;
& lt; form adı = "SPORM '" method = "get" & gt;Arama Başlığı: & lt; input size = "80" value = "? & Lt;; & gt; $ _GET [ 'title'] php echo"= "Title" type = "text" & gt isim;& Lt; input value = "Ara" type = "submit" & gt;İPUCU: kısmi bir başlık kullanmak ve hatta gibi regex olabilir & lt; / form & gt; "Samsung * hasarı."
$ title = $ _GET [ 'title'] yardıma ihtiyacım var;$ Title = preg_replace( "/ nasıl / i", "", $ title);$ Title2 = str_replace( "", "\ +", $ title);$ Title2 = str_replace( "_", "\ +", $ title2);
$ bigcmd = & lt; & lt; & lt; eof
egrep -i "(q | p) =" |muhtemelen arama sorguları sed var #use sadece kayıtları 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | bazı biçimlendirme değişikliklerini #Do ve en önemlisi tüm alanlarda değiştirmektitle2 awk için #search '{$ 11 yazdırmak}' | | #extract sadece arama verileri sed 's / p = / q = / ig' | #handle yahoo p = awk -F veya + egrep -i "$ title2" için altını çizen'q =' '{print $ 2}' | #grab q = sed ile başlayan tüm verileri 's / q = // g; s / + / / g; s /% 22 / "/ g; s /% 20 // g; '|insan okunabilir formatta kesim -d için #reformat "& amp;"-f 1 |diğer parametreler awk kapalı #strip '{print $ 0 ""}' bir web sayfasına
EOF çıktı planlıyoruz çünkü
bağlantıyı kopartır #add;
yardıma ihtiyacım var "{
print" $ başlığı "..." aranıyor( $ title = "!)";print "MEVCUT HAFTA. ..";Baskı `cat /var/log/virtualmin/visihow.com_access_log |erişim günlüğü $ bigcmd `dan #Get verileri;// Biz yahoo kullanan çok çünkü p = destekleyen. .. tuhaf ördek lol için( $ i = 1; $ i & lt; 6; $ i ++){ print "
$ i HAFTA( S) ÖNCE
";`Zcat /var/log/virtualmin/visihow.com_access_log.$i.gz yazdırmak |erişim günlüğü $ bigcmd `dan #Get verileri;}
} GT;
Bilinen Sorunlar
, ben
& lt yardıma ihtiyacım var.Örneğin birisi "iPhone" için arama yaparsa ve bir kullanıcı daha sonra Samsung sayfasına gitmek için tıklattığınız bir iPhone sayfasında oldu, bu kod yönlendirenden iPhone alır ve böylece bu verileri içeren bu olmamalıdır.Ben çok daha fazla yapar ve php içine komut satırı ması çok hareket ettirerek bu hatayı düzeltmek olacak, sürüm 2 üzerinde çalışıyorum.Kod daha geniş olacak, ama çok daha kullanışlı ve doğru veri verecektir.
Version 2 yardıma ihtiyacım var daha php daha fazla kontrol anlamına gelir ve yerine Çıktı haftalık toplamları görüntüleyerek onları göster bilgisini trend birden çok kez listeleme birden çok arama sayar aynı ip birden çok yinelenen istekleri yok sayıyor özelliklerisorgu uzunlukları tarafından popüler sayfaları sıralanmıştır kolay görüntüleme için kaydırılabilir divs yaklaşık daha popüler sayfalar ilk A little hızlı ve kirli javascript & Sons gösterileceği anlamına gelir ulaştı;başlık; & gt; Kullanıcı sorgular & lt; / title & gt css divs oto detaylı inceleyen
& lt için genişletmek yapmak;& Lt; meta name = "robots" content = "noindex" & gt;
& lt; form adı = "SPORM '" method = "get" & gt;Arama Başlığı:? & Lt; input size = "80" value = "& lt; php
if( strlen( $ _ GET [ 'title']) & gt; 0){
$ _GET [ 'title'] echo;
} else{
echo "*"; & lt; br = "" type = "text" & gt;} & gt;? "= "Title" / & gt isim;& Lt; input value = "Ara" type = "submit" & gt;
İPUCU: her şeyi görmek için * girin.Kısmi bir başlık kullanmak ve hatta gibi regex olabilir "Samsung * zarar." & Lt; / form & gt;
function( $ a, $ b) sortbylen yardım
dönüş strlen( $ b) -strlen( $ a) ihtiyaç}
$ title = $ _GET [ 'title'];$ Title = preg_replace( "/ nasıl / i", "", $ title);$ Title2 = str_replace( "", "\ +", $ title);$ Title2 = str_replace( "_", "\ +", $ title2);
$ bigcmd = & lt; & lt; & lt; eof
egrep -i "(q | p) =" |muhtemelen arama sorguları sed var #use sadece kayıtları 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | bazı biçimlendirme değişikliklerini #Do ve en önemlisi tüm alanlarda değiştirmek? Hayır | | Yardıma ihtiyacım
if( strlen( $ _ GET [ 'title']) & gt; 0){
$ _GET [ 'title'] echo;
} else{
echo "*"; & lt; br = "" type = "text" & gt;} & gt;? "= "Title" / & gt isim;& Lt; input value = "Ara" type = "submit" & gt;
İPUCU: her şeyi görmek için * girin.Kısmi bir başlık kullanmak ve hatta gibi regex olabilir "Samsung * zarar." & Lt; / form & gt;
if( $ title = "!"){
print "" $ başlığı "aranıyor. ..";( ; $ i & lt; 6; $ i = 0 $ i ++) için{ ($ i == 0 ise){ $ searchlogdata = `kedi /var/log/virtualmin/visihow.com_access_log | $ bigcmd`;} else{ $ searchlogdata =` zcat /var/log/virtualmin/visihow.com_access_log.$i.gz | $ bigcmd`;} $ searchlogarray =( "\ n", $ searchlogdata) patlayabilir; foreach( $ SDATA olarak $ searchlogarray){ $ logparts = patlayabilir( "", $ SDATA); $ ip = $ logparts [0]; $ url = $ logparts[1]; preg_match( "/( q | p) =( *).?"( \ & Sons; |? $) / "$ [2], $ eşleşen logparts);$ Ss = urldecode( $ matches [2]);$ P = str_replace( "+", "," $ p);(; 3) ve amp; & amp;( strlen( ($ ss)) & gt Döşeme( preg_match( "# http: \ \ / \ / # i", $ ss))!) Eğer{ // Site aramalardan url dışarıda tutmak(!( $ ip = $ dudak) ||( $ ss = $ LSS)){ $ dudak = $ ip ise;$ Lss = $ ss;$ SSDATA [ "$ url"] = "$ ss |".;}}} Uasort( 'sortbylen' $ dizi);foreach( $ SSDATA anahtarı $ = & gt gibidir; $ değer){ $ Sarr = patlayabilir( "|", $ değer);foreach( $ Sarr $ s gibi){ if( strlen( $ ler) & gt; 0) $ s2 [$ s] ++;} Arsort( $ s2);foreach( $ anahtar2 = & gt olarak $ s2; $ val2){ $ urldata [$ key] [$ i] = "$ val2: $ anahtar2";.$ STOT [$ key] [$ i] + = $ val2;} Unset( $ s2);} Unset( $ SSDATA);} Foreach( $ url = & gt olarak $ urldata; $ weekdata){ print " & lt; a target =" _ "href =" $ url "& gt; $ url & lt; / a & gt;
" boş;$ Hafta = 0;... Foreach( $ haftası olarak $ weekdata){ print "
" ++ wk $ "ÖNCE HAFTA( S): Toplam aramalar =" $ STOT [$ url] [$ hafta-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 gri; taşma:; "$ hafta '& gt kaydırma;}}
} GT;
& lt yardıma ihtiyacım var; / eof
Yapılacaklar
Sıralama sorgu uzunluğuna göre ikincil bir tür olarak, bu kadar uzun sorgular ilk
ile.Ben iyileştirilmesi için bu kod veya önerileri ile deneyimlerinizi duymak isteriz.
İpuçları Tricks & Sons;Uyarılar
- Not: Ben p yanı sıra ve standart q = Yahoo o garip ördek olmak için p kullanır =
- Sürüm 2 php daha karmaşık = ve ben çok hızlı bazı değişkenler kodlama oldu destekisimleri zayıf seçilmiştir.serbest kodu olarak şikayet etmeyin lütfen.Bunu düzeltmek istiyorum ve bunu belgelemek ve sürüm 3 olarak wiki içine eklerseniz Ama bu Pay It Forward:) harika olurdu!Bu adımların herhangi bir sorun varsa
- , daha fazla yardım için bir soru sormak ya da aşağıdaki yorum bölümünde sonrası.
| Daniel Öne Eser 69 Haberler |
Daniel VisiHow bir özellikli yazar 2.601 madde Düzenlemeler 24.290 Noktalar Başlangıç.Daniel 24290 puanla "Teğmen" seviyesini elde etti.Daniel 69 makaleler başlamış ve 2601 makale düzenlemeler yapmıştır.17.578 kişi Daniel'in makale katkılarını okudum. |
Daniel sor: | Merhaba, benim adım Daniel. |
Daniel : | I "Kolayca / ayrıştırmak php awk ve sed linux komut satırı programlarını kullanarak apache günlükleri bir web sitesinin arama sorgu dizeleri arama" hakkında sorun size yardımcı olabilir misiniz? |