ma è facile
STEP 1: La tabella
---
Direi che la tabella potrebbe, semplicemente, contenere 2 campi ove il primo è la data/orario, in formato unixtime, ed il secondo è il conteggio dei nuovi file rispetto alla data precedente
Quindi qualcosa tipo
Codice PHP:
CREATE TABLE newfiles (
`newfiles_datetime` INT(10) UNSIGNED NOT NULL,
`newfiles_count` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`newfiles_datetime`)
)
STEP 2: Quando effettuare il controllo?
---
Ad esempio se vogliamo che almeno il 30% degli accessi alla homepage causino la ricerca, si può usare un codificillo del genere:
Codice PHP:
mt_srand(microtime());
if (mt_rand(0, 100) > 70)
{
// codice di aggiornamento del database
}
STEP 3: Operazione di ricerca
---
La prima cosa che deve fare il codice di ricerca è acquisire la data più alta, quindi
Codice PHP:
$query = mysql_query('SELECT MAX(newfiles_datetime) FROM newfiles');
list($newfiles_datetime_max) = mysql_fetch_row($query);
mysql_free_result($query);
una volta acquisita la data più alta, accediamo alla cartella contenente i file uploadati tramite ftp, quindi facciamo
Codice PHP:
$ftpPath = 'ftp/';
$newfiles_datetime = 0;
$newfiles_count = 0;
foreach($file in glob($ftpPath . '*', GLOB_NOSORT))
{
if (($filemodificationtime = filemtime($ftpPath . $file)) > $newfiles_datetime_max)
{
// Aggiorna il contatore
$newfiles_count++;
// Abbiamo bisogno della data più grande tra quelle dei file modificati
if ($file_modification_datetime > $newfiles_datetime)
{
$newfiles_datetime = $file_modification_datetime;
}
}
}
una volta acquisito il nuovo conteggio nel database si va a scrivere il record
Codice PHP:
if ($newfiles_count > 0)
{
mysql_query('INSERT INTO newfiles VALUES(' . $newfiles_datetime . ', ' . $newfiles_count . ')');
}
Lo STEP 3 va dentro l'if precedente.
STEP 4: L'utente ha già avuto accesso? Se si acquisiamo i dati
---
E' inutile, far vedere all'utente, che ci sono nuovi N file se non ha mai avuto accesso, quindi
Codice PHP:
$newfiles_count = 0;
if (isset($_COOKIE['newfiles_lastaccess']) === true && is_numeric($_COOKIE['newfiles_lastaccess']) === true)
{
$query = mysql_query('SELECT SUM(newfiles_count) FROM newfiles WHERE newfiles_datetime >= ' . ((int)$_COOKIE['newfiles_lastaccess']));
list($newfiles_count) = mysql_fetch_row($query);
mysql_free_result($query);
}
Il codice parla da sé! In questo modo, per verificare se devi visualizzare o meno l'avviso di nuovi file presenti fai
Codice PHP:
if ($newfiles_count > 0)
{
// codice per visualizzare l'avviso
}
come hai potuto vedere sono poche righe di codice in fin dei conti, poco più di 20 righe