02.94.75.11.74

  • seo milano
  • dai al tuo sito la giusta energia
  • lasciati alle spalle i tuoi concorrenti
  • 20 di esperienza web / seo al tuo servizio
  • seo milano
  • dai al tuo sito la giusta energia
  • lasciati alle spalle i tuoi concorrenti
  • 20 di esperienza web / seo al tuo servizio

PHP Web Access Logger ( Linux Debian Apache Style )

Google Analytics è bello.
Analytics è potente, è tosto, ha mille funzioni, graficamente è da paura e ci piace a tutti.
Ok.

MA..


Se siete dei sysadmin e/o avete mai avuto a che fare con un web server linux ( Debian spero! ) vi sarete sicuramente imbattutti in quella cosa meravigliosa chiamata log.

Da terminale ssh è possibile avere, in tempo reale, un' analisi davvero dettagliata di tutto ciò che capita sul(i) vostro(i) sito(i) sia per quanto riguarda  gli accessi che gli errori.
I due file in Apache2 si chiamano, di solito, access.log ed error.log e si possono consultare, ad esempio, tramite il comando

tail -f /directorydelfilelog

es.

tail -f /var/www/www.test.it/web/log/access.log

quello che otteniamo è una lista di "eventi" di questo tipo:

Carino vero?

Tra le varie cose vedo anche l' ip dei "visitatori" ed il loro User Agent.
Informazioni davvero utili, non trovate?

Ma se non abbiamo nessun accesso ssh al web server dove è ospitato il nostro sito ( uno fra tutti: Aruba ) come facciamo?
Ci accontentiamo del pur ottimo Google Analytics?
Sì?

Naaaaa

Sviluppiamo un super easy php logger stile quello di Apache su sistemi Linux / Debian!

Ecco il codice:

//Before deleting the folder, delete all it's files
function deleteDir($dirPath){
    if (file_exists($dirPath)){
        if (!is_dir($dirPath)) {
            die("$dirPath must be a directory");
        }
        $files = glob($dirPath . '*', GLOB_MARK);
        foreach ($files as $file) {
            unlink($file);
        }
       rmdir($dirPath);
    }
}
$logFolder = "phplogger";
if (!is_dir($logFolder)){
    mkdir($logFolder, 0700);
}
//lets get some useful stuff
$uri = $_SERVER['REQUEST_URI'];
$ip = $_SERVER['REMOTE_ADDR'];
$referrer = $_SERVER['HTTP_REFERER'];
$userAgent = $_SERVER['HTTP_USER_AGENT'];
//time stuff
$today = getdate();
$month = $today['mon'];
$day = $today['mday'];
$year = $today['year'];
$hours = $today['hours'];
$minutes =  $today['minutes'];
//string 2 log
$stingToLog = $year . "-" . $month . "-" . $day . " " . $hours . ":" . $minutes . "  " . $ip . "  " . $uri . " " . $userAgent . " " . $referrer . "\r\n";
//current month dir
if (!is_dir($logFolder."/".$month)) {
    mkdir($logFolder."/".$month, 0700);
}
//single day log file
$file = $logFolder.'/'.$month."/".$year."-".$month."-".$day.".txt";
//last month
($month == 1) ? $precMon = 12 : $precMon = $month -1;
//if day >=28 delete old month dir
if ($day>=28 && is_dir($logFolder."/".$precMon) ){
    deleteDir($logFolder."/".$precMon);
}
if (!file_exists($file)){
    touch($file);
}
//lets write
file_put_contents($file, $stingToLog, FILE_APPEND | LOCK_EX);

La directory dei log che viene creata ( nella root web ) è come in immagine:

Ed il file di log, al suo interno, è fatto così:

I dati che ho deciso di loggare ( ma potete modificarli a vostro piacere! ) sono i seguenti:

Anno-mese-giorno    ora:minuti   IP  URI  User Agent   Referrer

Ora, vi starete chiedendo: dove inserire questo script?
In un file che viene richiamato ogni qual volta viene aperta una pagina che vi interessa monitorare ( es. nel footer ).

Buoni log a tutti!

3Bit Web & SEO Labs

Agenzia SEO Milano /
Posizionamento Nei Motori di Ricerca
C.F. & P.IVA 07819030961
© Copyright 2014 3Bit S.r.l.
Tutti i diritti riservati.

Agenzia SEO Milano
Web & Seo Agency Milano
Uffici: Via Savona 125, 20144 Milano
Sede Legale: Via Savona 125, 20144 Milano
Tel. / Fax: 02.94.75.11.74
3Bit Seo Milano / Agenzia Seo Milano Micro Data:


+390294751174
3Bit
Via Savona 12520144
Milano