Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

kako napisati ove skripte

[es] :: PHP :: kako napisati ove skripte

[ Pregleda: 1490 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

neshto vishe
zgembo handislic

Član broj: 169878
Poruke: 132
91.205.68.*



Profil

icon kako napisati ove skripte03.04.2011. u 13:17 - pre 158 meseci
Ako imam ulazni tekstualni fajl u kome se nalaze ovi podaci:

1226908800 5782717 230 68.189.11.162 snagajob.com/job-search-engine.aspx gv 253
1226908800 6223791 230 99.148.149.0 gayvideotgp.com/tgp/st/st.php?id=162651&script=1&url=http://www.gaysexmovies.us/885amnsh/alotmpgporn.html&p=75 gv 253
1226908800 4030941 198 173.96.76.204 shop.heaven666.org/free_stuff.php gv 235
1226908800 4664251 230 69.154.95.111 gtoons.info/my-wild-raunchy-son-3/NUL gv 253
1226908800 5727035 230 76.93.202.116 dynimages.neopets.com/nh/spotlight/entry/a_and_cz_mom/1.png?lm=1225240228 gv 253
1226908800 5464520 226 193.159.167.113 google.com /bookmarks/?output=xml&num=10000&zx=13313 gv 253
1226908800 3463527 226 24.4.211.9 google.com /search?hl=en&q=porn&btnI=I'm Feeling Lucky&aq=f&oq= gv 235
1226908800 5267389 230 41.246.217.190 ask.com /inc/js/webadvancedsearch_c.js?v=1.2 gv 253
1226908800 5170696 230 76.174.253.183 gpassionpsp.foros.ws/admin_867a98syysf2/admin_styles.php?sid=206ac79e3839e94fbd45b83b23502e5a gv 253
1226908800 3205614 226 161.51.11.6 search.live.com http://search.live.com/cashbac...;form=CM&p=2&q=carlson civil suite 2009 resale gv 204



Ako bi znacenje kolona bilo u redosljedu:
timestamp, clientid, locationid, IP, search_engine, url, client_version.
search_engine je npr. google, yahoo...Kada se racunaju domeni ova kolona se spaja sa url za dobijanje pravog url.
Kako bih u php mogao da napisem skripte za racunanje broj unique klijenata po koloni (clientid),
statistiku koliko ima klijenata iz npr.US koliko NON-US, npr top 10 US states na osnovu broja unique klijenata,
npr. top 10 posjecenih domena racunajuci samo unique posjete, npr top 10 posjecenih domena (bez subdomena) racunajuci ukupan broj request-a, te npr. top 10 locationid-a racunajuci samo unique klijente.

Nadam se da moze neko nesto pomoci, treba mi sto je moguce prije. Pozz
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.mbb.telenor.rs.



+303 Profil

icon Re: kako napisati ove skripte03.04.2011. u 13:36 - pre 158 meseci
Ja bi ubacio sve podatke u mysql bazu, pa onda iz nje radio ta sortiranja i ostalo sto treba. Samo napravis te kolone sto si pominjao, skriptu koja parsira txt fajl i ubacuje podatke u bazu, a posle ti je veoma lako odraditi sve ostalo sto si napisao...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.rs.



+33 Profil

icon Re: kako napisati ove skripte03.04.2011. u 16:35 - pre 158 meseci
Za takvu strukturu fajla, i ako se zna da je clientID taj drugi segment, broj unique klijenata bi mogao da izvučeš ovako:
Code:
$clientIDs = array();
$linije = file(/putanja/do/fajl.txt);
foreach ($linije as $linija) {
   $id = substr($linija, strpos($linija, ' ')+1, 7); //Ako znamo da su kolone odvojene razmakom (" ") i da je id dužine 7 karaktera
   if (!in_array($id, $clientIDs)) {
      $clientIDs[] = $id;
   }
}

echo count($clientIDs); //Broj unique klijenata

Sličan je princip i kod ostalih upita, samo ne znam kako bi mogao da dođeš do tih US/NON-US podataka, ali pretpostavljam da taj locationID ima veze s s tim.
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: kako napisati ove skripte03.04.2011. u 17:24 - pre 158 meseci
Parsiraj taj fajl (npr. pomoću RegEx-a) kako bi dobio više-dimenzionalni niz, nešto tipa
Code:
array(
array(timestamp, clientid, locationid, IP, search_engine, url, client_version),
array(timestamp, clientid, locationid, IP, search_engine, url, client_version),
array(timestamp, clientid, locationid, IP, search_engine, url, client_version),
...
)

A zatim pogledaj PHP funkcije za rad sa nizovima.
http://www.php.net/manual/en/book.array.php

Ovo gore što je napisao @Nikola Poša moglo bi i pomoću regularnih izraza, nešto kao:
Code:

preg_match_all('/(?<=^\d{10}\s)(\d{7})/m', $text, $output);
$unique_count = count(array_unique($output[0]));


Pozdrav.

[Ovu poruku je menjao Br@nkoR dana 03.04.2011. u 18:35 GMT+1]
Banned - Not available
 
Odgovor na temu

neshto vishe
zgembo handislic

Član broj: 169878
Poruke: 132
91.205.68.*



Profil

icon Re: kako napisati ove skripte04.04.2011. u 09:55 - pre 158 meseci
Statistika koliko ima klijenata iz US koliko iz NON-US treba da se odredi na osnovu IP adrese... Iz primjera mozes vidjeti 10 ip adresa, a ulazni fajl je mnogo veci, mogu ti ga poslati.
 
Odgovor na temu

neshto vishe
zgembo handislic

Član broj: 169878
Poruke: 132
91.205.68.*



Profil

icon Re: kako napisati ove skripte04.04.2011. u 10:11 - pre 158 meseci
A ovo top x posjecenih domena i locationid-a....
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: kako napisati ove skripte04.04.2011. u 10:38 - pre 158 meseci
Npr top locationid:

Code (php):

preg_match_all('/(?<=^\d{10}\s\d{7}\s)(\d{3})/m', $text, $output);
$top_locationid = array_count_values ($output[0]);
arsort($top_locationid );

echo '<pre>'.print_r($top_locationid, true).'</pre>';


i kao što rekoh:

Citat:
Br@nkoR: Parsiraj taj fajl (npr. pomoću RegEx-a) kako bi dobio više-dimenzionalni niz, nešto tipa
Code:
array(
array(timestamp, clientid, locationid, IP, search_engine, url, client_version),
array(timestamp, clientid, locationid, IP, search_engine, url, client_version),
array(timestamp, clientid, locationid, IP, search_engine, url, client_version),
...
)

A zatim pogledaj PHP funkcije za rad sa nizovima.
http://www.php.net/manual/en/book.array.php


Banned - Not available
 
Odgovor na temu

[es] :: PHP :: kako napisati ove skripte

[ Pregleda: 1490 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.