Как в программе остановить счетчик и затем возобновить его с сохраненного значения?

Как правильно реализовать вывод на сайте количества заявок и одобренных заявок, при условии, что каждые сутки счетчик должен сбрасываться и начинаться сначала? Я думаю использовать цикл и записывать значения в файл, затем сравнивать сохраненное значение с текущей итерацией цикла. Затем этот скрипт можно запускать по крону через определенное количество времени в течение суток. Вот мой текущий набросок кода:

```php
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);
}
```

Как можно улучшить эту реализацию?
  • 9 октября 2023 г. 6:37
Ответы на вопрос 3
Одним из способов остановить счетчик и возобновить его с сохраненного значения в программе может быть использование переменной, которая будет хранить текущее значение счетчика. По мере необходимости счетчик можно увеличивать или уменьшать, сохраняя его значение в этой переменной. Например:

```php
$counter = 0; // начальное значение счетчика

// остановка счетчика
function stopCounter(&$counter) {
    // сохраняем текущее значение счетчика
    $savedValue = $counter;
    $counter = -1; // устанавливаем флаг остановки (-1)
    return $savedValue;
}

// возобновление счетчика с сохраненного значения
function resumeCounter(&$counter, $savedValue) {
    $counter = $savedValue;
}

// пример использования
$counter = 0; // начальное значение счетчика

// останавливаем счетчик и сохраняем его значение
$savedCounterValue = stopCounter($counter);

// восстанавливаем счетчик со сохраненного значения
resumeCounter($counter, $savedCounterValue);
```

Что касается улучшения реализации вывода количества заявок на сайте, можно использовать базу данных для хранения значений. Таким образом, можно удобно сохранять и получать данные о количестве заявок, а также легко обновлять их значения. Вместо записи в файл можно использовать запросы к базе данных, чтобы получать значения текущего количества заявок и одобренных заявок. Примерно так:

```php
// подключение к базе данных

// получение текущего количества заявок
$query = "SELECT COUNT(*) FROM requests";
$result = mysqli_query($connection, $query);
$row = mysqli_fetch_row($result);
$requestsCount = $row[0];

// получение текущего количества одобренных заявок
$query = "SELECT COUNT(*) FROM requests WHERE status = 'approved'";
$result = mysqli_query($connection, $query);
$row = mysqli_fetch_row($result);
$approvedCount = $row[0];
```

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