Как можно создать простой счётчик, который хранит данные в текстовом файле, без использования базы данных?

Как можно определить популярность недавно разработанной страницы внутри локальной сети организации, чтобы понять, стоит ли продолжать её развитие или отказаться от проекта? Страница интегрирована в сервис одной из систем электронного документооборота (СЭД), которая ограничивает возможности работы с PHP, поэтому она представлена только в HTML. В PHP подсчитать посещения было бы просто — достаточно открыть файл, записать значение, закрыть, затем открыть и считать. В JavaScript же есть сложности с куками, так как они локальны для каждого пользователя. Существует ли простое решение для этой задачи, чтобы все пользователи были учтены?
  • 14 марта 2025 г. 6:25
Ответы на вопрос 2
Создание простого счётчика посещений с хранением данных в текстовом файле без использования базы данных состоит из нескольких шагов. Поскольку у вас ограниченные возможности работы с PHP и можете использовать только HTML и JavaScript, можно рассмотреть несколько возможных подходов:

### Вариант 1: Использование PHP

Если у вас всё же есть возможность использовать PHP хотя бы для осуществления записей и чтения из текстового файла, то можно создать файл `counter.php`, который будет выполнять эти операции. Например:

```php
<?php
// Укажите путь к файлу для хранения счётчика
$file = 'counter.txt';

// Читаем текущее значение 
$count = 0;
if (file_exists($file)) {
    $count = (int)file_get_contents($file);
}

// Увеличиваем значение на 1
$count++;

// Сохраняем обновлённое значение обратно в файл
file_put_contents($file, $count);

// Выводим текущее количество посещений
echo $count;
```

Затем в вашем HTML-файле можно поместить вызов этого скрипта:

```html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Страница</title>
    <script>
        window.onload = function() {
            fetch('counter.php') // Загружаем счётчик при каждом загрузке страницы
                .then(response => response.text())
                .then(data => {
                    document.getElementById('visitCount').innerText = `Посещения: ${data}`;
                });
        };
    </script>
</head>
<body>
    <h1>Добро пожаловать на страницу!</h1>
    <div id="visitCount">Загрузка...</div>
</body>
</html>
```

### Вариант 2: Отправка данных через AJAX

Если PHP не доступен, а только HTML и JavaScript, это усложняет задачу. В таком случае можно попытаться организовать систему через сервер, который может принимать запросы (например, если у вас есть REST API или другой серверный язык). Но в вашем случае, если PHP не доступен, можно сделать так:

1. Создайте прокси-сервер, который будет управлять счётчиком.
2. Используйте JavaScript для отправки запросов к этому прокси-серверу при каждом загрузке страницы.

### Вариант 3: Использование веб-сервиса

Если в вашем распоряжении есть возможность работы с удалённым API, можно использовать, например, Google Analytics или любой другой сервис для отслеживания посещаемости. Вам просто нужно будет интегрировать его код в вашу HTML-страницу.

### Вариант 4: Куки и локальное хранилище

Куки и локальное хранилище пользователя используются для хранения локальной информации, что не подойдёт для вашей задачи, так как вы хотите учитывать посещения всех пользователей. Если использование серверного языка невозможно, и важно учитывать всех пользователей, то единственным надёжным методом останется использование серверного кода.

### Заключение

С учётом ограничений, пробуйте использовать PHP, если это возможно. Если работа с PHP полностью невозможна, стоит рассмотреть создание сервиса для обработки счётчиков или использовать существующие сторонние решения для учёта статистики.
Простое решение - ничего не добавлять, а просто правильно смотреть access_log, группируя ip адреса при просмотре и сортируя по частоте появления в логе.
Похожие вопросы