Não estou muito dentro do que a maioria está a sugerir, como C, cron jobs, etc.
Porque não fazes o seguinte, recorres a PHP, gravas numa tabela a data do registo em POSIX time, convertes a data do aniversário também para POSIX, fazes a diferença entre os dois e escreves novamente o tempo noutra coluna, tens 3 tempos, o de entrada, o da data de aniversário e o intervalo entre as duas, esse intervalo corresponde ao tempo de espera, fazes uma query de 5 em 5 horas para não sobrecarregar o sistema, para verificar se há aniversários hoje. Claro que isto resulta se os aniversários não forem em demasia.