Как сделать счётчик максимального онлайна? Помогите
Iron_Man, опиши подробнее, что за максимальный онлайн?
ДоХтор, парень хочет вывести цифру максимального количества посетителей, которые находились когда либо на сайте одновременно.
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 - дата фиксации максимального пребывания юзеров.