PHP

Счетчик посещений на PHP

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

Так как мы не можем вести контроль в режиме реального времени, нам надо определится в течении какого времени счетчик будет считать пользователя онлайн. Я взял 10 минут...
<?php time_on_line = 10;?>

теперь надо подумать о том куда мы будем писать временную информацию. Можно было бы использовать базы данных, но для такой задачи это по меньшей мере не разумно. По-этому мы будем писать в файл. Допустим наш файл для счетчика пользователей онлайн будет называться online.da.
<?php $path = 'online.da';?>

Теперь код с подробными комментами
<?php  
                $time_on_line = 10; 
                $path = 'online.da'; 
               //два массива, для гостей и пользователей 
        $users = array(); 
        $guests = array(); 
                //если файл уже создан, читаем с него инфу 
        if (file_exists($path) && is_readable($path)) { 
                        //инфа хранится в сериализованном виде(таким образом можно превратить масив в строку)
            $data = unserialize(file_get_contents($path)); 
                       //теперь мы присваиваем объявленным нами выше массивам данные из файла
            $users = (!empty($data['users'])) ? $data['users'] : array();
            $guests = (!empty($data['guests'])) ? $data['guests'] : array();
        } 
               //следующие два цикла удаляют из списка онлайн тех кто отсуцтвовал более 10мин.
              //поясню: данные у нас хранятся в массивах, где ключ это ID пользователя или IP гостя, а значение это время до которого он будет считаться онлайн
        foreach ($users as $key => $user) { 
            if ($user < time()) unset($users[$key]); 
        } 
        foreach ($guests as $key => $guest) { 
            if ($guest < time()) unset($guests[$key]); 
        } 
               //это типо авторизованный юзер 
        if (!empty($_SESSION['user']['id'])) { 
            $users[$_SESSION['user']['id']] = time() + $time_on_line * 60); 
        } else { 
                        //а это гость. $_SERVER['REMOTE_ADDR'] содержит IP адрес 
            $guests[$_SERVER['REMOTE_ADDR']] = time() +  $time_on_line * 60);
        } 
                //теперь сериализуем(превращаем в строку) данные и сохраняем 
        file_put_contents($path, serialize(array('users' => $users, 'guests' => $guests)));
?>

это что касается части подсчета и сохранения. а как же выводить данные? Далее я об этом и расскажу. В теории нам надо открыть файл счетчика, считать данные и затем преобразовать их в нужный нам вид. После этого мы можем вывести их на страницы сайта и любоваться. Тут все гениально просто, так что я сразу приведу код данной части счетчика посещений с подробными комментами.
<?php  
    $path = 'online.dat'; 
    $users = 0; 
    $quests = 0; 
        //проверяем есть ли и доступен ли файл счетчика 
    if (file_exists($path) && is_readable($path)) { 
                //десериализуем. После этого данные будут в виде массива 
        $data = unserialize(file_get_contents($path)); 
                //считаем количество гостей и юзеров и присваиваем значения переменным
        $users = count($data['users']); 
        $quests = count($data['guests']); 
         
    } 
    //теперь переменные $users и $quests содержат количество соответствующих человеческих единиц онлайн:)
?>

Вот и весь счетчик, не требующий базы данных. Теперь можно просто выводить данные. Как по отдельности, так и суммировать их, например, чтобы показать общее число людишек онлайн.
Теги:
Счетчик посещений, SEO, Счетчики, Оптимизация сайта, раскрутка и маркетинг, программирование
Добавлено: 29 Мая 2018 20:19:55 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...