Well, you can change the expire time of a script by using set_time_limit (1000)
The number in the parentheses is the amount of seconds the script will run before it times out. If you use zero ( set_time_limit(0) ), the script will run forever.
Having a script run forever is a really bad idea though and having the crontab run a script that takes a split second to execute every 15 minutes or so is much better way to go.
Assuming your calender events are stored in a MySQL database, you can run a script every 15 minutes that select all events that occurred in the last 15 minutes and then sent a mail if there was a result.
EDIT: Does anyone know what Windows uses for event scheduling?