Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
[dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 4 месяца
- Откуда: Израиль
- Благодарил (а): 73 раза
- Поблагодарили: 248 раз
[dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Расширение позволяет видеть на главной странице всех пользователей, посетивших конференцию в течение текущего дня и устанавливает рекордное количество посещений за два дня
Репозиторий https://github.com/alg5/wwhlight
Инсталляция стандартная
Отправлено спустя 12 минут 38 секунд:
Комментарий: отличия данного расширения от расширения [dev] NV Who Was Here - Побывавшие на форуме
Данное расширение не собирает статистику о каждом вошедшем пользователе и не сохраняет её
Расширение использует имеющуюся информацию о последней дате визита, хранящуюся в таблице phpbb_users.
Эта информация не актуальная( как в таблице сессий), но она обновляется кроном(от движка) каждый час
Кроме того, один раз в сутки срабатывает крон от расширения, вычисляя количесто пользователей, побывавших вчера и сегодня. Если это число окажется больше запомненного, то рекорд количества посещений и даты вчера-сегодня обновляются
Админских настроек у лайт-версии нет
Преимущества - низкая нагрузка на сервер, используется всего один легкий запрос на главной странице
Репозиторий https://github.com/alg5/wwhlight
Инсталляция стандартная
Отправлено спустя 12 минут 38 секунд:
Комментарий: отличия данного расширения от расширения [dev] NV Who Was Here - Побывавшие на форуме
Данное расширение не собирает статистику о каждом вошедшем пользователе и не сохраняет её
Расширение использует имеющуюся информацию о последней дате визита, хранящуюся в таблице phpbb_users.
Эта информация не актуальная( как в таблице сессий), но она обновляется кроном(от движка) каждый час
Кроме того, один раз в сутки срабатывает крон от расширения, вычисляя количесто пользователей, побывавших вчера и сегодня. Если это число окажется больше запомненного, то рекорд количества посещений и даты вчера-сегодня обновляются
Админских настроек у лайт-версии нет
Преимущества - низкая нагрузка на сервер, используется всего один легкий запрос на главной странице
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- phpBB 3.1.0 RC2
- Сообщения: 3276
- Стаж: 12 лет 11 месяцев
- Благодарил (а): 717 раз
- Поблагодарили: 158 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Не боты не нужны. Ну тогда спасибо
-
- phpBB 1.2.0
- Сообщения: 11
- Стаж: 9 лет
- Откуда: Анжеро судженск
- Благодарил (а): 5 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Алг, Спасибо за расширение, у меня почему то показывает пользователя что он был на форуме тогда, когда он разлогонится, а так если он не нажал кнопку выход но ушел с форума, не показывает что он был на форуме. Почему так выходит? форум у меня в подписи.
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 4 месяца
- Откуда: Израиль
- Благодарил (а): 73 раза
- Поблагодарили: 248 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
belov29, я думаю, что он у вас любого пользователя покажет, но покажет не сразу. В расширении есть пометка, что информация о пользователе обновляется один раз в час.
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- phpBB 1.2.0
- Сообщения: 11
- Стаж: 9 лет
- Откуда: Анжеро судженск
- Благодарил (а): 5 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Это понятно, но у меня за целый день не обновляется, не то что за час!
-
- phpBB 1.2.0
- Сообщения: 11
- Стаж: 9 лет
- Откуда: Анжеро судженск
- Благодарил (а): 5 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Вот за целый день ноль пользователей стоит, хотя уже много пользователей заходило. Если разлогонится то покажет что был сразу. Алг, Помогите, пожалуйста, почему у меня такая ошибка!
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 4 месяца
- Откуда: Израиль
- Благодарил (а): 73 раза
- Поблагодарили: 248 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
belov29, ну давайте думать. Возможно, расширение конфликтует с каким-то другим.
1.Попробуйте для начала временно отключить все расширения очистить кеш и посмотреть, будут ли отражаться зарегенные пользователи.
2. Попробуйте нажать на ссылку "пользователи", отсортировать по полю "ЗАРЕГИСТРИРОВАН" в порядке убывания и проверить есть ли там залогиненные пользователи, заходившие более часа назад
3. Установите расширение Cron Status, проследите, что крон
потом будем смотреть по результатам
1.Попробуйте для начала временно отключить все расширения очистить кеш и посмотреть, будут ли отражаться зарегенные пользователи.
2. Попробуйте нажать на ссылку "пользователи", отсортировать по полю "ЗАРЕГИСТРИРОВАН" в порядке убывания и проверить есть ли там залогиненные пользователи, заходившие более часа назад
3. Установите расширение Cron Status, проследите, что крон
cron.task.core.tidy_sessions
выполняется регулярно один раз в час и никто его не блокируетпотом будем смотреть по результатам
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- phpBB 3.0.4
- Сообщения: 2211
- Стаж: 17 лет
- Откуда: Павлодар
- Благодарил (а): 5 раз
- Поблагодарили: 154 раза
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Как выяснилось, что запрос не сильно лёгкий, ну и желательно сделать кэширование.
OPEN config/services.yml
FIND
ADD AFTER
OPEN event/listener.php
FIND
ADD AFTER
FIND
ADD AFTER
FIND
REPLACE WITH
Изменение в условии WHERE
OPEN config/services.yml
FIND
Код: Выделить всё
alg.wwhlight.listener:
class: alg\wwhlight\event\listener
arguments:
- @config
- @template
- @user
- @dbal.conn
- %core.root_path%
- %core.php_ext%
- @auth
Код: Выделить всё
- @cache
FIND
Код: Выделить всё
, \phpbb\db\driver\driver_interface $db
, $phpbb_root_path, $php_ext
, \phpbb\auth\auth $auth
Код: Выделить всё
, \phpbb\cache\service $cache
Код: Выделить всё
$this->counter_users_total = 0;
$this->counter_users_reg = 0;
$this->counter_users_hidden = 0;
Код: Выделить всё
$this->cache = $cache;
Код: Выделить всё
public function index_modify_page_title()
{
$this->user->add_lang_ext('alg/wwhlight', 'wwhlight');
$username_full = '';
$users_list = '';
$sql = "SELECT user_id, username, username_clean, user_colour, user_type, user_ip, user_lastvisit, user_allow_viewonline " .
" FROM " . USERS_TABLE .
" WHERE user_type <>" . USER_IGNORE .
" AND DATE(FROM_UNIXTIME (user_lastvisit)) = CURDATE()" .
" ORDER BY user_lastvisit desc";
$result = $this->db->sql_query($sql);
while ($row = $this->db->sql_fetchrow($result))
{
$username_full = get_username_string(( 'full'), $row['user_id'], $row['username'], $row['user_colour']);
$last_visit_time = sprintf($this->user->lang['WWHLIGHT_LATEST'], $this->user->format_date($row['user_lastvisit'], 'H:i') );
$hover_info = $last_visit_time ? ' title="' . $last_visit_time . '"' : '';
if ($row['user_allow_viewonline'] )
{
$users_list .= $this->user->lang['COMMA_SEPARATOR'] . '<span' . $hover_info . '>' . $username_full . '</span>' ;
$this->counter_users_reg++;
}
else
{
if ($this->auth->acl_get('u_viewonline'))
{
$users_list .= $this->user->lang['COMMA_SEPARATOR'] . '<em' . $hover_info . '>' .$username_full . '</em>' ;
}
$this->counter_users_hidden++;
}
$this->counter_users_total++;
}
$users_list = utf8_substr($users_list, utf8_strlen($this->user->lang['COMMA_SEPARATOR']));
if ($users_list == '')
{
$users_list = $this->user->lang['NO_ONLINE_USERS'];
}
$this->template->assign_vars(array(
'WWHLIGHT_LIST' => $this->user->lang['REGISTERED_USERS'] . ' ' . $users_list,
'WWHLIGHT_DETAILS' => $this->obtain_users_string(),
'WWHLIGHT_RECORD' => sprintf($this->user->lang['WWHLIGHT_RECORD'], $this->config['wwhlight_record'], $this->config['wwhlight_record_time']) . '<br />',
));
}
Код: Выделить всё
public function index_modify_page_title()
{
$this->user->add_lang_ext('alg/wwhlight', 'wwhlight');
$username_full = '';
$users_list = '';
$counter_users_reg = $counter_users_hidden = $counter_users_total = 0;
if ($wwh_cache = $this->cache->get('_wwhlightdata_' . $this->user->lang_name . ($this->auth->acl_get('u_viewonline') ? '_h' : '_o')))
{
extract($wwh_cache);
}
else
{
$sql = "SELECT user_id, username, username_clean, user_colour, user_type, user_ip, user_lastvisit, user_allow_viewonline " .
" FROM " . USERS_TABLE .
" WHERE user_type <>" . USER_IGNORE .
" AND user_lastvisit > UNIX_TIMESTAMP(CURDATE())" .
" ORDER BY user_lastvisit desc";
$result = $this->db->sql_query($sql);
while ($row = $this->db->sql_fetchrow($result))
{
$username_full = get_username_string(( 'full'), $row['user_id'], $row['username'], $row['user_colour']);
$last_visit_time = sprintf($this->user->lang['WWHLIGHT_LATEST'], $this->user->format_date($row['user_lastvisit'], 'H:i') );
$hover_info = $last_visit_time ? ' title="' . $last_visit_time . '"' : '';
if ($row['user_allow_viewonline'] )
{
$users_list .= $this->user->lang['COMMA_SEPARATOR'] . '<span' . $hover_info . '>' . $username_full . '</span>' ;
$counter_users_reg++;
}
else
{
if ($this->auth->acl_get('u_viewonline'))
{
$users_list .= $this->user->lang['COMMA_SEPARATOR'] . '<em' . $hover_info . '>' .$username_full . '</em>' ;
}
$counter_users_hidden++;
}
$counter_users_total++;
}
$users_list = utf8_substr($users_list, utf8_strlen($this->user->lang['COMMA_SEPARATOR']));
$vars = array('users_list', 'counter_users_reg', 'counter_users_hidden', 'counter_users_total');
$this->cache->put('_wwhlightdata_' . $this->user->lang_name . ($this->auth->acl_get('u_viewonline') ? '_h' : '_o'), compact($vars), 360);
}
$this->counter_users_reg = $counter_users_reg;
$this->counter_users_hidden = $counter_users_hidden;
$this->counter_users_total = $counter_users_total;
if ($users_list == '')
{
$users_list = $this->user->lang['NO_ONLINE_USERS'];
}
$this->template->assign_vars(array(
'WWHLIGHT_LIST' => $this->user->lang['REGISTERED_USERS'] . ' ' . $users_list,
'WWHLIGHT_DETAILS' => $this->obtain_users_string(),
'WWHLIGHT_RECORD' => sprintf($this->user->lang['WWHLIGHT_RECORD'], $this->config['wwhlight_record'], $this->config['wwhlight_record_time']) . '<br />',
));
}
user_lastvisit > UNIX_TIMESTAMP(CURDATE())
, и добавление индекса по user_lastvisit
(я не написал миграцию, добавил вручную) ускоряет выполнение запроса (больше не нужен полный перебор таблицы пользователей).Всё повторяется. nurlan.info
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 4 месяца
- Откуда: Израиль
- Благодарил (а): 73 раза
- Поблагодарили: 248 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
nissin, спасибо, я дополню.
А насчёт кеширования, что будет означать для запроса? Если за все время активности юзера(жизни сессии) будет выдаваться кешированный результат, так это не устроит форум с активной посещаемостью
это обязательно надо
А насчёт кеширования, что будет означать для запроса? Если за все время активности юзера(жизни сессии) будет выдаваться кешированный результат, так это не устроит форум с активной посещаемостью
-
- phpBB 3.0.4
- Сообщения: 2211
- Стаж: 17 лет
- Откуда: Павлодар
- Благодарил (а): 5 раз
- Поблагодарили: 154 раза
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
От того что список пользователей, которые посетили форум, сформируется один раз в 10 минут, я думаю никакой проблемы не возникнет, а вот нагрузка на главную страницу спадёт. Я ставил подобное кэширование (10 минут) с оригинальным wwh на форуме с большой посещаемостью, жалоб не поступало. Если критично, то можно поставить минуту или две, но ставить кэширование нужно.
Всё повторяется. nurlan.info
-
- phpBB 2.0.11
- Сообщения: 848
- Стаж: 14 лет 2 месяца
- Откуда: Оттуда
- Благодарил (а): 54 раза
- Поблагодарили: 91 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Алг, Так и что, расширение обновлено, кэширование добавлено?
-
- Поддержка
- Сообщения: 12626
- Стаж: 13 лет 4 месяца
- Благодарил (а): 170 раз
- Поблагодарили: 2538 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Perfecthus, нет, так и висит мой PR с правками из темы - https://github.com/alg5/wwhlight/pull/3
-
- Former team member
- Сообщения: 1965
- Стаж: 14 лет 8 месяцев
- Благодарил (а): 57 раз
- Поблагодарили: 626 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Эти правки для самой первой версии, они не совпадают с кодом в репо, так можно затереть все изменения и события которые были внесены позже.
Текущая версия из репозитория с изменениями.
Текущая версия из репозитория с изменениями.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Не пишите вопросы лично, если можете задать их на форуме!
Спецзаказы не интересуют!
Спецзаказы не интересуют!
-
- Поддержка
- Сообщения: 12626
- Стаж: 13 лет 4 месяца
- Благодарил (а): 170 раз
- Поблагодарили: 2538 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
В pr правки адаптированы под ту версию. Только Алг их, похоже, не видит
-
- Former team member
- Сообщения: 1965
- Стаж: 14 лет 8 месяцев
- Благодарил (а): 57 раз
- Поблагодарили: 626 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Точно, сразу не правильно понял гит. Смотрю красные удалённые $phpbb_dispstcher, а то что есть ещё зелёные не того))
Надо протестировать как будет работать с расширением для вывода аватар.
Я чуть иначе оформил кэширование, загнал туда массив данных $rowset, освободив лишь от запросов к бд, foreach продолжает работать как обычно, наверое это будет менее производительнее.
Надо протестировать как будет работать с расширением для вывода аватар.
Я чуть иначе оформил кэширование, загнал туда массив данных $rowset, освободив лишь от запросов к бд, foreach продолжает работать как обычно, наверое это будет менее производительнее.
Не пишите вопросы лично, если можете задать их на форуме!
Спецзаказы не интересуют!
Спецзаказы не интересуют!
-
- phpBB 1.4.4
- Сообщения: 159
- Стаж: 10 лет 9 месяцев
- Благодарил (а): 1 раз
Re: [dev] Who Was Here Light - Кто сегодня был на форуме(облегченная версия)
Подскажите,кому верить ?
У вас нет необходимых прав для просмотра вложений в этом сообщении.