Dunque.... puoi fare in due modi, oltre ad Ajax.
1. Che l'utente sia loggato o meno utilizzi le Cron (in server Linux) o uno scheduled task in ambiente Windows che ad intervalli ciclici vada ad interrogare il DB ed inviare dei messaggi (anche email) ai tuoi utenti per ricordare gli appuntamenti.
2. Se questi messaggi li vuoi fare visuaizzare solo agli utenti loggati, allora puoi fare un work-around per evitare ajax.
Crei un iframe nella pagina personale di un utente, in cui inserisci o un javascript che ad intervalli regolari fa il refresh della pagina, oppure un semplice meta tag HTML che effettua il refresh della stess pagina.
Ovvio che nella pagina che inserisci nell'iframe devi inserire uno script php che interroga il DB e legge i prossimi appuntamenti dell'utente.
![]()