[PHP] Struttura Database di statistica

Rey

Utente Attivo
11 Set 2012
73
0
6
Salve a tutti,
ho scritto un programma in un router che ogni giorno genera un file txt con l'hostname, le ultime cifre l'ip. i mb scaricati, uplodati e totali, una cosa così:

HTML:
iPad-di-Mario,254,100,100,200
android-432133,253,50,50,10
etc...
Poi con google chart genero il grafico

PHP:
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['IP', 'DL', 'UP', 'TOT'],
          <?php
          $file = file("stats--20170315.txt");
          foreach ($file as $line) { list($ip,$dl,$up,$tot, ) = explode(",",trim($line));
          echo "['$ip | $tot MB', $dl, $up, $tot],\n";
        }
        ?>
        ]);

Invece che visualizzarli così al volo vorrei importarli in un db mysql per generare statistiche settimanali/mensili oltre che giornaliere ma non so bene come strutturare il db, gli ip sono da 100 a 254 quindi in totale 154 colonne? Avevo in mente di creare una tabella con 365 righe (una per giorno) e 154 colonne (una per ip), probabilmente si può fare meglio.. Sapete darmi qualche dritta? Grazie..

Qui un po' di codice:

PHP:
// Se il database è vuoto
$tabella = $prefixdb . 'anno' . $anno;
$sql = "SELECT data FROM $tabella WHERE id_anno = ?";
$data = $db->Query_select($sql, array(1)); 
if (!count($data)) {

// Se l'anno è bisestile
if ($bisestile == 1) {

// Inserisco le date
for ($giorni = 1; $giorni <= 31; $giorni++) {
for ($mesi = 1; $mesi <= 12; $mesi++) {

if ($mesi == 2 && $giorni == 30 ||
$mesi == 2 && $giorni == 31 ||
$mesi == 4 && $giorni == 31 ||
$mesi == 6 && $giorni == 31 ||
$mesi == 9 && $giorni == 31 ||
$mesi == 11 && $giorni == 31) { continue; }

$aammgg = $anno . '-' . $mesi . '-' . $giorni;
$sql = "INSERT INTO $tabella (data,mese) VALUES(?,?)";
$data = $db->Query_InsUpd($sql, array($aammgg,$mesi));
}
}
etc...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
da quello che ho capito tu vuoi crere delle statisti di visita al tuo sito, giusto?
prima di mettere giu il codice è importante definire la struttura del db (carta e matita) definendo quali dati servono e a cosa poi devono servire.
ti faccio un esempio:
se vuoi sapere quante visite ha fatto un determinato ip al tuo sito semplicemente così senza sapere le date ti basta uan tabella del tipo
IP (chiave primaria)
num_visite
e con la INSERT ... ON DUPLICATE KEY UPDATE risolvi subito
se al contrerio vuoi fare delle statistiche più complesse allora la tabella diventa più complessa (e di conseguenza le query)
es se vuoi dividere per data la tabella potrebbe essere
id (chiave primaria)
IP
data_visita
ricorda comunque che mentre lo script è semplice da aggiornare, aggiornare le tabelle (es aggiungere un campo) e un po più rognoso soprattutto se la tabella è gia molto usata
 

Rey

Utente Attivo
11 Set 2012
73
0
6
Ciao borgo,
forse la mia spiegazione sul cos'è è stata un po' troppo sintetica, provo a spiegarmi meglio, non ha niente a che fare con le visite a un sito, immagina di connettere il tuo cellulare o PC in wifi in un hotel e navigare su youtube, facebook etc.. al tuo cellulare verrà assegnato un ip casuale che va da 100 a 254 ed avrà validità 24h. Una volta al giorno il mio programma scrive in un txt i dati sul traffico generato da ogni dispositivo (c'è l'esempio nel mio post precedente) e resetta i contatori, stop. Ora pescando i dati dal txt vedo statistiche giornaliere, vorrei averle anche settimanali/mensili.
 

Rey

Utente Attivo
11 Set 2012
73
0
6
Nessuno sa darmi qualche dritta? Penso farò tutto in un'unica tabella, Una riga per giorno e una colonna per utente.. 154 colonne in una tabella sono troppe?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
sempre che non abbia capito male io farei una tabella del tipo chiamata es statistiche
Codice:
id
data
ip
tot_mb
dl
up
tot
poi leggi il tuo file txt
PHP:
//dati connessione
$file = file("stats--20170315.txt");
foreach ($file as $line) { list($ip,$dl,$up,$tot, ) = explode(",",trim($line));
           echo "['$ip | $tot MB', $dl, $up, $tot],\n";
           $data_lettura_txt=date("y/m/d");//data in cui leggi il file
           $query="INSERT INTO statistiche(data,ip,tot_mb,dl,up,tot) VALUE('$data_lettura_tx','$ip','$tot','$dl','$up','tot')";
           //al posto di $data_lettura_tx puoi metter now() o usare il timestamp $data_lettura_txt=time(); vedi tu
           $ris=mysqli_query($conn, $query);
}
//....
da una tabella fatta così puoi ricavare tutte le statistiche che ti servono (giornaliere, mensili, annuali, quanto scaricato....) interrogandola in varie maniere

spero di non aver capito male
 
Discussioni simili
Autore Titolo Forum Risposte Data
KILLERIX [PHP] Notifiche utente, connessione database, struttura generale dati PHP 3
N Struttura ad Albero di Directory _ PHP PHP 2
W PHP Webservices SOAP, struttura file wsdl XML 4
M [PHP] struttura ad albero PHP 1
M [PHP] Struttura iterativa PHP 2
M [PHP] Algoritmo con struttura iterativa PHP 2
M [PHP] Problema con algoritmo struttura iterativa PHP 2
S non riesco a capire la struttura di questo sito in PHP PHP 0
G Invio form con PHP PHP 1
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0

Discussioni simili