Счетчик посещений PHP на основе сеанса слишком срабатывает

У меня есть простой счетчик посещений PHP на основе сеанса на веб-сайте. Проблема в том, что он, кажется, добавляет фантомные попадания всякий раз, когда я открываю веб-сайт в течение некоторого времени (даже без перезагрузки), поэтому я думаю, что тайм-аут сеанса установлен на очень короткое время где-то на сервере. Тем не менее, я проверил php.ini, и тайм-аут составляет стандартные 24 минуты, в то время как фантомные попадания добавляются каждые три минуты или около того.

Веб-сайт еще не имеет именных серверов, указывающих на него, ничего на него не ссылается, так что это не проблема роботов/краулеров. Вот мой код:

            $hit_file = file(__DIR__ . "/hit_file.txt");

            $hit_num = $hit_file[0];
            if(!isset($_SESSION['been']))

                {


                    $hit_num++;

                    $hit_write = fopen(__DIR__ . "/hit_file.txt", 'w');

                    fwrite($hit_write, $hit_num);

                    fclose($hit_write);

                    $_SESSION['been'] = 1;

                }

             echo $hit_num;

ОБНОВЛЕНИЕ: я заметил несколько странных записей в access.log. Все они имеют следующий формат: ::1 - - [06/Nov/2012:22:05:03 +0100] "GET / HTTP/1.0" 200 3719 "-" "-"

Я получаю один каждые пять минут или около того, что примерно соответствует тому, как часто добавляются фантомные хиты. Что же они такое?


person Daniel Maly    schedule 06.11.2012    source источник
comment
Где твой session_start()? И где сейчас находится сайт? Почему бы не зафиксировать некоторую информацию об атаке (дата, время, IP-адрес) и не записать ее в свой журнал, чтобы увидеть, что происходит?   -  person random_user_name    schedule 07.11.2012
comment
PHP не имеет состояния. Сохранение страницы открытой не вызовет дополнительных обращений к странице, если у вас не было AJAX, запускающего ее.   -  person Chris Bornhoft    schedule 07.11.2012
comment
Что именно вы пытаетесь измерить? Уникальные пользовательские сессии?   -  person Mike Brant    schedule 07.11.2012
comment
session_start() находится вверху каждой страницы, это просто код счетчика. И сеансы начинаются нормально.   -  person Daniel Maly    schedule 07.11.2012
comment
Это не боты. Я проверил журналы доступа. Я просто захожу на сайт. И да, я пытаюсь измерить уникальные сеансы. Мои журналы показывают много записей GET/undefined HTTP/1.1 404. У меня есть слайдер изображений jQuery на сайте, которому в настоящее время нечего показать, так что, вероятно, это 404s. Но может ли это запускать код счетчика посещений на моем index.php?   -  person Daniel Maly    schedule 07.11.2012
comment
Нет, 404 запускается вашим веб-сервером, ваш logentries/index.php равен 200 (ОК). $_SERVER['HTTP_USER_AGENT'] и $_SERVER[''REMOTE_ADDR'] могут помочь, если у вас короткое время жизни сеанса.   -  person pce    schedule 07.11.2012
comment
Хорошо, что это за записи: ::1 - - [06/ноября/2012:22:05:03 +0100] GET / HTTP/1.0 200 3719 - -? Я получаю один каждые пять минут.   -  person Daniel Maly    schedule 07.11.2012
comment
Может быть, это какой-то ползающий бот? Выясните, что такое IP-адрес, и выполните обратный поиск, может сказать вам, если это от бота   -  person TheLQ    schedule 07.11.2012
comment
Это странно, у записей нет IP (см. выше, это все, что я получаю).   -  person Daniel Maly    schedule 07.11.2012


Ответы (2)


::1 — IPv6-адрес локального хоста. Вот где я бы начал искать, если бы я был на вашем месте. Одно из приложений делает эти запросы. Либо отследите его, либо просто проверьте $_SERVER['REMOTE_ADDR'], если это не ::1.

person d33tah    schedule 06.11.2012

Я бы сказал, что если вы посмотрите на свои журналы, вы увидите, что это поисковые роботы (и, возможно, другие) сканируют ваш сайт. То есть, если ваш сайт работает в данный момент.

person thatidiotguy    schedule 06.11.2012