@LaMass

Как прервать счетчик и продолжить отсчет с полученного значения?

Доброго времени суток, камрады! Есть такая задачка: выводить на сайте количество заявок/одобренных заявок. В сутки таких заявок максимум 60, одобренных заявок - 70% от общего количества. Этот счетчик должен сбрасываться каждые сутки и начинаться сначала.
Мысль была у меня такая: сделать цикл, записывать значение в файл, сравнивать записанное значение с текущей итерацией цикла. Этот скрипт запускать по крону через определенное количество времени в течение суток.
Как же правильно реализовать все это дело?
Сейчас вот такие наброски
for($i=1; $i<= 60; $i++){
$timer_log = fopen("/ajax/timer_log.txt", "w+") or die("Не удается открыть файл!");
$count = fgets($timer_log);
    if($count == $i){
        continue;
    }
      
        fwrite($timer_log, $i);
        fclose($timer_log);
      
}
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если заявки реальные, то брать из базы данных реальное количество поданных и одобренных за сегодня.
Если это просто фиктивный счётчик, то считать исходя из текущего времени суток.
Ответ написан
@alexalexes
LaMass.
1) На сервере считаете, какое число отдать пользователю для первой загрузки страницы, с учетом суточной экстраполяции + случайное значение. Отдаете пользователю это число, запоминаете в сессии PHP, что вы отдали и в какое время. Если в сессии есть какое-то значение, и оно от текущих суток, то досчитываете у него дельту и перезаписываете в сессию, отдаете новое значение пользователю. Если сутки изменились, то пересчитываете с нулевой точки и сохраняете в сессию.
2) На клиенте отображаете текущее значение, и через setInterval и ajax запрашиваете на сервере, какое следующее число показать. На сервере считаете значение по экстраполяции по дельте времени от текущего времени и сохраненного в сессии, сохраняете новое значение счетчика и новое время в сессии. Отдаете клиенту новое значение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы