2013-09-19 3 views
0

Это прослушивание меня в течение дня, и я действительно не могу узнать, у меня есть базовая страница входа/регистрации, а при регистрации временная метка хранится в базе данных mysql (таймер таблицы, кулдаун столбца):Timer mysql php check

$settime = mysql_query("INSERT INTO `timer` (`cooldown`) VALUES(0)") or die(mysql_error()); 

То, что я хочу сделать сейчас (я создаю браузер ММОРПГ), это когда я делаю конкретный запрос POST, я хочу таймер в моей базе данных, чтобы уйти. Этот таймер должен быть 1 минута, а также отображаться для пользователей, например: <?php echo $timer['cooldown']; ?> Всякий раз, когда таймер равен = 0, я могу снова выполнить определенную функцию, и таймер будет снова установлен на 60 секунд.

Извините за недостаток знаний, но я не могу найти нигде, как это сделать.

+1

Прежде чем вы начнете создавать что-то сложное, начните с чтения на mysqli_ * или 'PDO' ... функции' mysql_ * 'устарели. – NDM

+0

таймер, который нужно отключить в вашей базе данных? Я считаю, что вы ищете какой-то таймер jQuery, который вызывает различные функции, возможно, ajax или post, но я рекомендую обрабатывать таймер на стороне клиента. – caramba

+0

Ну, я открыт для других возможностей, но с «перезагрузкой» в Javascript просто сбрасывается, если я открыть другую страницу, не так ли? Не было бы лучше, чтобы он хранился в БД, связанной с идентификатором пользователя? – user2403357

ответ

1

Что вы пытаетесь сделать здесь - фоновая работа - идет вразрез с принципом веб-разработки цикла запроса-ответа в среде без общего доступа PHP. Но есть несколько способов, чтобы разбить жесткий цикл:

  • Если вам просто нужно сделать некоторые обновления БД через 1 минуту, вы можете использовать MySQL событие: http://dev.mysql.com/doc/refman/5.1/en/events.html
  • Если функция, которую вы хотите назвать это не работает слишком долго, вы можете проверить каждый пользовательский запрос, если есть записи в таблице timer, которые старше 1 минуты.
  • Создайте скрипт PHP, который каждую минуту вызывается заданием cron. Он проверяет, имеются ли необработанные элементы в таблице timer и что-то с ними делает.
  • Создайте сценарий PHP daemon, который просыпается каждую минуту, чтобы проверить.
  • Если вам нужно что-то изменить на странице пользователя через 1 минуту, выполнение PHP-скрипта вызовите клиентскую сторону с тайм-аутом JavaScript, а AJAX или websockets - лучший вариант.

Для отображения обратного отсчета пользователю необходимо использовать JavaScript. Если вы используете серверный таймер, вы можете использовать его только для целей отображения, скрывая обратный отсчет, когда он будет завершен. Чтобы обойти проблему «пользователь открывает новую страницу до окончания времени», поместите данные за оставшиеся секунды в атрибут HTML data, где ваш код JavaScript может его прочитать.