Sądzę że tego nie da się zrobić w PHP (przynajmniej bez dostępu do cron-a) bo przecież skrypt PHP jest analizowany tylko podczas generowania strony. Jeśli chcesz aby czas był odliczany na bieżąco to prościej jest zrobić to w JavaScript np. tak:
startCookie=document.cookie.indexOf("czas=");
if (startCookie!=-1)
{
var c=getCookie("czas");
}
else
{
var c=; //ilość czasu podana w milisekundach
}
var t;
var timer_is_on=0;
function timedCount()
{
if (c>0)
{
godz = Math.floor(c/60/60);
if (godz < 10) {godz = "0"+godz}
min = Math.floor(c/60)-godz*60;
if (min < 10) {min = "0"+min;}
sek = c % 60;
if (sek < 10) {sek = "0"+sek;}
document.getElementById('txt').innerHTML=godz+" h "+min+" min "+sek+" sek";
c=c-1;
t=setTimeout("timedCount()",1000);
zap_czas (c);
}
if (c==0)
{
var expire = new Date();
document.cookie="czas=;expires="+expire.toGMTString();
window.location.href="strona"; //przekierowanie na inną stronę po upływie czasu
}
}
A tu masz funkcje zapisujące czas do ciasteczka. Czas jest zapisywany i pobierany przy każdym cyklu czyli co sekundę.
function zap_czas (time)
{
var expire = new Date();
document.cookie="czas=;expires="+expire.toGMTString();
document.cookie="czas="+time;
}
function getCookie(Name)
{
var search = Name + "=";
if (document.cookie.length > 0)
{
offset = document.cookie.indexOf(search);
if (offset != -1)
{
offset += search.length;
end = document.cookie.indexOf(";", offset)
if (end == -1) end = document.cookie.length
return unescape(document.cookie.substring(offset, end))
}
}
}