Счётчик онлайна

630
.

Как сделать счётчик максимального онлайна? Помогите

.

Iron_Man, опиши подробнее, что за максимальный онлайн?

.

ДоХтор, парень хочет вывести цифру максимального количества посетителей, которые находились когда либо на сайте одновременно.

.
# intelligent (14.10.2017 / 23:59)
ДоХтор, парень хочет вывести цифру максимального количества посетителей, которые находились когда либо на сайте одновременно.
Понял, спс )
.
ДоХтор

Iron_Man, надо создать в базе поле, в котором скрипт будет хранить число-счётчик, и проверять по условию - если число в базе меньше реального числа в онлайн, то перезаписать.
На форуме вроде полно таких примеров. Попробуй поиском найти.

.

Ищу.. ищу, но никак найти не могу

.

Iron_Man, буду за ПК, напишу пример.

.

ДоХтор, Ок

.
Iron_Man, тестировал под джон 6.2.0, всё корректно работает. Если всё сделаешь без ошибок, то скрипт запустится. Установка:

1. Выполнить в phpMyAdmin SQL-запрос:
SQL (+/-)
--
-- Структура таблицы `online`
--
DROP TABLE IF EXISTS `online`;
CREATE TABLE IF NOT EXISTS `online` (
  `onl_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `onl_all` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `onl_time` int(10) UNSIGNED NOT NULL DEFAULT 0,
  PRIMARY KEY (`onl_id`),
  KEY `onl_all` (`onl_all`),
  KEY `onl_time` (`onl_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1;

INSERT INTO `online` (`onl_all`) VALUES (0);

2. Произвести замену в файле : /incfiles/classes/counters.php
Вместо этого кода (+/-)
/*
    -----------------------------------------------------------------
    Счетчик посетителей онлайн
    -----------------------------------------------------------------
    */
    static function online()
    {
        $users = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `lastdate` > '" . (time() - 300) . "'"), 0);
        $guests = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_sessions` WHERE `lastdate` > '" . (time() - 300) . "'"), 0);
        return (core::$user_id || core::$system_set['active'] ? '<a href="' . core::$system_set['homeurl'] . '/users/index.php?act=online">' . functions::image('menu_online.png') . $users . ' / ' . $guests . '</a>' : core::$lng['online'] . ': ' . $users . ' / ' . $guests);
    }
Вставить этот код (+/-)
/*
    -----------------------------------------------------------------
    Счетчик посетителей онлайн
    -----------------------------------------------------------------
    */
    static function online()
    {
        $users = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `lastdate` > '" . (time() - 300) . "'"), 0);
        $guests = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_sessions` WHERE `lastdate` > '" . (time() - 300) . "'"), 0);
        $online = mysql_fetch_assoc(mysql_query('SELECT * FROM `online`'));
        
        if ($online['onl_all'] < $users) {
            $online['onl_all'] = $users;
            $online['onl_time'] = time();
            
            mysql_query("
                UPDATE `online` 
                SET `onl_all` = {$online['onl_all']},
                    `onl_time` = {$online['onl_time']}
            ");
        }
        
        $onl_all = ' / <b>'. $online['onl_all'] .'</b><small> чел. '. 
            functions::display_date($online['onl_time']) .'</small>';
        
        return (core::$user_id || core::$system_set['active'] 
            ? '<a href="' . core::$system_set['homeurl'] . '/users/index.php?act=online">' . 
              functions::image('menu_online.png') . $users . ' / ' . $guests . '</a>' 
            : core::$lng['online'] . ': ' . $users . ' / ' . $guests) . $onl_all;
    }
После этого, сохранить изменения и обновить страницу - счётчики внизу страницы будут отображаться так: 1 / 0 / 2 чел. Сегодня, 23:16
где :
1 - количество юзеров онлайн;
0 - гости онлайн;
2 чел. - максимальное количество одновременного пребывания на сайте зарегистрированных юзеров;
Сегодня, 23:16 - дата фиксации максимального пребывания юзеров.
.

Скрин

Прикрепленные файлы:
Всего: 15