Io non uso CodeIgniter, ma ecco come si può fare questo in php dritto.
In pratica, è possibile utilizzare le sessioni per registrare ogni visita al proprio sito e registrare le richieste di pagine o semplicemente registrare ogni hit sulla pagina. La prima opzione ti dà più informazioni (quanti colpi unici sono stati fatti, quanti colpi provengono da visitatori di ritorno, ecc.) Ma richiede più programmazione per la configurazione e richiede la gestione della sessione utente. Così, per i vostri scopi vi spiego l'opzione 2.
SQL:
Table 'pageViews'
Id - Integer, auto Increment, primary key
page - varchar(150)
datetime - datetime
Nella pagina che stai monitoraggio, si dovrebbe aggiungere:
$query2 = "INSERT INTO `pageViews` (page, datetime) VALUES ('".$_SERVER["SCRIPT_NAME"]."', ".date("Y-M-d H:I:s").")";
$result2 = //insert DB connection etc. to apply update to DB
È quindi possibile recuperare le righe dal db in base alla pagina e al timestamp, conta i risultati e visualizzali utilizzando il canvas html5. Oppure, poiché ogni hit ha un datetime, è possibile suddividerlo ulteriormente in ore del giorno ecc.
Spero che questo aiuti.
Per modificare questo per semplici contatori giornalieri, aggiungere una colonna aggiuntiva denominata "viste" che è solo un numero intero. Quindi nella pagina metti un segno di spunta per vedere se c'è una riga per la pagina corrente per oggi nel db. In tal caso, ottenere il valore attuale delle visualizzazioni e incrementarlo e rivendenderlo nel DB.
Per il totale di visualizzazioni probabilmente creerei un'altra tabella con le stesse colonne ma non con la colonna di data e ora. Quindi, nella tua pagina, incrementerai il valore delle visualizzazioni per la pagina corrente anche nella nuova tabella.
Questo sarebbe un fulmine veloce. Il trade-off è la perdita di dettagli. Quindi, ecco il MySQL e PHP per questa terza opzione:
MySQL:
Table 'dailyViews'
Id - Integer, auto Increment, primary key
views - integer
page - varchar(150)
datetime - datetime
Table 'totalViews'
Id - Integer, auto Increment, primary key
views - integer
page - varchar(150)
PHP:
// Search the DB for an entry today for this page in dailyViews
$query = "SELECT views FROM `dailyViews` WHERE `page`='".$_SERVER["SCRIPT_NAME"]."' AND `datetime`=".date("Y-M-d H:I:s")."";
$result = //insert your db connection etc to execute the query
if (mysqli_num_rows($result)==1) {
$resultArray = mysqli_fetch_array($result, MYSQLI_ASSOC);
$views = $resultArray['views']+1;
$query2 = "UPDATE `dailyViews` SET `views`=".$views." WHERE `page`='".$_SERVER["SCRIPT_NAME"]."' AND `datetime`=".date("Y-M-d H:I:s")."";
$result2 = //insert DB connection etc. to apply update to DB
} else if (mysqli_num_rows($result)<1) {
$query2 = "INSERT INTO `dailyViews` (views, page, datetime) VALUES (1, '".$_SERVER["SCRIPT_NAME"]."', ".date("Y-M-d H:I:s").")";
$result2 = //insert DB connection etc. to apply update to DB
} else {
// there is more than one entry for this page and date in the DB. An error has ccurred
}
// Then just get the total views for this page and increase it by 1.
Ho aggiornato la mia risposta. Per curiosità, che sito è? Sono sorpreso che ti aspetti milioni di visite al giorno. – Marvin
Per lo più per interesse, non ho bisogno di usare uno script come questo in questo momento, ma sto iniziando a lavorare su alcuni siti più grandi quindi probabilmente ne avremo bisogno in futuro :) – Adam