У меня есть вопрос о проблеме javascript/php cron. ну это не проблема сама по себе, но в моем случае это так. У меня есть javascript, который устанавливает cookie и отсчитывает до конца времени этого файла cookie. в моем случае его 10 минут. У меня также есть файл cron, который запускается каждые 10 минут. Я хотел бы синхронизировать обратный отсчет с файлом cron.php countdown серверная сторона
Приведенный ниже сценарий хорошо работает, когда я вызываю его со страницы, однако он отсчитывается с момента, когда пользователь посещает страницу и ее синхронизацию с запущенным файлом cron.
Я понимаю, что это не вопрос php, но страницы im, отображающие скрипты, являются php.
Любые указатели для меня? Помощь была бы принята с благодарностью. Благодарим вас за чтение.
Все, что у меня есть, внизу.
<div id="countre4">
<script type="text/javascript">
function setCookie(c_name, value)
{
var exdate = new Date();
exdate.setDate(exdate.getDate() + 14);
var c_value = escape(value) + "; expires=" + exdate.toUTCString();
document.cookie = c_name + "=" + c_value;
}
function mycountre(countdownId, countdownTarget, countdownSeconds, countdownLooping){
var countre = document.getElementById(countdownId); // get html element
if (!countre) {
return;
}
var target = countdownTarget; // target time
var intervalId; // id of the interval
setCookie("time", target);
// update function
function updatecountre(){
var time = Math.floor((target - new Date().getTime())/1000); // countdown time in seconds
if (time < 0) { // if countdown ends
if (countdownLooping) { // if it should loop
target += 1000 * countdownSeconds; // set new target time
time = Math.floor((target - new Date().getTime())/1000); // recalculate current time
setCookie("time", target);
} else { // otherwise
clearInterval(intervalId); // clear interval
time = 0; // set time to 0 to avoid displaying negative values
}
}
// split time to seconds, minutes and hours
var seconds = '0' + (time % 60);
time = (time - seconds)/60;
var minutes = '0' + (time % 60);
time = (time - minutes)/60;
var hours = '0' + time;
// make string from splited values
var str = hours.substring(hours.length - 2) + ':' + minutes.substring(minutes.length - 2) + ':' + seconds.substring(seconds.length - 2);
countre.innerHTML = str;
}
intervalId = setInterval(updatecountre, 200); // start interval to execute update function periodically
};
var parts = document.cookie.split(';');
var cookie = new Date().getTime() + 1000 * 15 * 60;
for (var i = 0; i < parts.length; ++i) {
if (parts[i].trim().indexOf('time') == 0) {
var value = parts[i].trim().split('=');
cookie = parseInt(value[1]);
}
}
mycountre(
'countre4', // id of the html element
cookie,
10 * 60, // time in seconds (10min here)
true // loop after countdown ends?
);
</script>
</div>
Как бы реализовать его на моем скрипте. все, что я там делал, зависит от файла cookie. :( – user631756
К сожалению, я пытаюсь сказать красиво «вы сделали это неправильно». Рефакторите свой javascript, чтобы принять значение больше напрямую, а не использовать cookie. –
lol. Плохо попробуйте другой подход. ответить. – user631756