14Aug

Kolayca / ayrıştırmak php awk ve sed linux komut satırı yardımcı programlarını kullanarak apache günlükleri bir web sayfasının arama sorgu dizeleri arama

6 Parçalar: Kullanım awk ve Sorunları Sürüm 2 Bilinen kullanıcı yazdığınız arama sorguları için apache günlük dosyalarını ayrıştırmak için sed: Az komut satırı önişleme ve daha php işlem Yapılacaklar İpuçları Tricks & amp;Uyarılar

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.

bu yardımcı oldu mu?Evet |Hayır |Ben
İçeriği
  • 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
Reklam

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

sorgular

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

Bu yardımcı oldu bir web sayfasına çıkış planlıyoruz çünkü '{ "
" $ 0 yazdırmak}' diğer parametreler awk kapalı #strip
bağlantıyı kopartır #add?Evet |Hayır |Ben

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

bu yardımcı oldu mu?Evet |Hayır |Ben

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

bu yardımcı oldu mu?Evet |Hayır |Ben eğer

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;

bu yardımcı oldu mu?Evet |Hayır |istenmeyen kayıtları dönen böylece grep yönlendirme verileri ile kayıtları toplayıp / eof

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.

bu yardımcı oldu mu?Evet |Hayır |Az komut satırı ön işleme ve daha php işleme

Bu sürüm aşağıdaki avantajları / dezavantajları vardır:

  • az komut satırı önişleme uzun kod
  • anlamına Ben

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;

    bu yardımcı oldu mu?Evet |Hayır |; Ben{

    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

    bu yararlı Evet oldu; "$ title2" #search title2

    EOF için egrep -i | veya + awk '{$ 11 "" $ 7 "" print $ 1}' için altını çizen

    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;

    bu yardımcı oldu mu?Evet |Hayır |Ben

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

    VisiHow tüm yorumlar ağırlıyor yazın.Anonim olmak istemiyorsanız, kayıt ya da giriş yapın. Ücretsizdir.




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