Связанный с сервером счетчик в PHP, который обнуляется каждую полночь или, по крайней мере, выглядел бы так - PullRequest
4 голосов
/ 05 марта 2012

Я хотел бы знать, как лучше всего реализовать в PHP счетчик, который, будучи увеличен некоторыми событиями на сервере в течение дня, будет сброшен в ноль с наступлением нового дня, то есть в полночь.Возможно, сравнение даты, связанной с последним значением счетчика, с текущей датой приведет к его сбросу?

РЕДАКТИРОВАТЬ: Что, если счетчик сбрасывается в тот момент, когда его увеличивают при условии, что код каким-то образом вычисляетчто последний раз, когда счетчик увеличивался, был вчера или днем ​​ранее?Это было бы достаточно хорошо.

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Вы храните свой счетчик в базе данных?Если это так, вы можете просто сохранить дату последнего изменения вместе с ней.Позвольте мне предположить, что у вас есть счетчики таблицы (имя, значение, дата), тогда следующий псевдокод может дать вам представление:

$counter_id='herpderp';
$today = date('dMY');
$date, $value = query("SELECT date, value FROM counters where name='$counter_id'");
if ($date!=$today) {
  $value = 0;
  query("UPDATE counters SET date='$today', value=1 WHERE name='$counter_id' AND date='$date'");
} else {
  query("UPDATE counters value=value+1 WHERE name='$counter_id' AND date='$date'");
}
echo $value;
1 голос
/ 05 марта 2012

В зависимости от вашего сервера вы либо сможете реализовать запланированное задание (Windows), либо задание CRON (Linux).Это то, что позволяет вашему сценарию выполняться в определенное время дня (или ночи).

Что касается счетчика, вы можете реализовать это несколькими способами.Для обеспечения целостности и безопасности данных я бы сохранил значение в базе данных.Чтобы увеличить, извлеките значение и увеличьте его (есть также несколько способов, в зависимости от вашей СУБД, сделать это с помощью одного SQL-запроса).В противном случае вы всегда можете отредактировать файл конфигурации с помощью команд ввода / вывода в PHP.

Настройка задания CRON / запланированного задания

Если вы дадите мне больше информации о вашемКонфигурация сервера Я могу дать вам конкретные уроки, где вы можете узнать, как настроить вашу задачу.

После того, как вы это выясните, вы захотите вызвать конкретный скрипт.Ваш скрипт на PHP может быть настроен следующим образом:

Сравните текущий D / M / Y с предыдущими днями, скорее всего, хранится в вашей базе данных или файле конфигурации.Если это подтвердится, обновите базу данных / файл, выполнив любые аналитические действия, которые вы считаете подходящими.

...