Как все усложняют... Просто пишете timestamp момент, когда событие началось. Далее, зная сколько событие должно идти и время его начала, при загрузке страницы всегда можно узнать сколько осталось времени
// now - текущий timesamp
// timesamp - сохраненный timesamp начала отсчета
// duration - длительность события в секундах
if (now > timestamp + duration) {
// событие уже истекло
} else {
// осталось (timestamp - now) секунд
}
И не нужно никаких кронов. Только нужно учесть, что разница клиентского и серверного таймера будет равняться времени загрузки страницы.