beh, se te salvassi a database per quell'utente oltre al messaggio anche il timestamp...
puoi fare un'operazione, timestamp attuale (quando viene lanciato lo script) - timestamp storato, se il risultato è meno di 180 secondi (tre minuti) avvisi l'utente con la tecnica che preferisci e non metti niente a db, se invece son passati almeno tre minuti metti a database. (senza usare sessioni se non per il nome utente)