lets say its a Poll. but with a fixed time when the voting starts. There are many polls in the database, every one of them start on different time. I am not worried about seconds. but accuracy to per minute is must. so all the registrants receive email saying "the voting has started for so and so Poll"...
the reason exact time for sending mail is important because every Poll has a limited time to vote. e.g. a poll opens only for 1 hour. so as soon as that time reaches of when the poll opens all the people must be voted as there is only 1 hour to contribute.
now just for the sake of example. if there was a poll that only runs for 10 mins. and there are 20,000 email recipients. when the time comes for that minute of poll starting. i will start sending emails. this can take 5 mins or so lets say. now when this job is finished and the script loops back again to check another Poll wit now(), that could have missed other polls which started in last 5 mins.
so therefore, the above example of a shell script running forever wouldnt work.
i think the cron job running every minute will do the trick here. as every minute it will open a new thread incase last one is still running.