Secondo me una "granularità" di 1 minuto è eccessiva: sia che serva "preavvisare" della scadenza, che di "informare a posteriori", 5 o anche 30 minuti su 24 ore secondo me sono più adatti... detto questo valuta anche la frequenza di accesso al tuo sito. Infatti puuoi gestire gli avvisi tramite dei flag su db e usare come lasso di tempo qualcosa come appunto 5 o 30 minuti.
Ad ogni accesso alle tue pagine controlli intanto se devi inviare qualche avviso (quindi se un utente accede al tuo sito alle 20.00, chi deve ricevere gli avvisi intorno a tale ora li riceve perchè lo script è avviato dalla visita, non da un crontab).
A queto punto puoi anche impostare i tuoi crontab con una certa cadenza, che però invieranno le mail solo agli utenti che non l'hanno ancora ricevuta... per eliminare completamente il problema dei crontab dovresti usare un servizio esterno se vuoi la certezza degli avvisi anche se nessuno visita il tuo sito.