Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

MOD Last Visit

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5283
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

YarNET
У меня этот мод. Таблица с сессиями в среднем заполнена на 2000-2500 записей. На форуме в среднем постоянно сидит 20 человек, в максимуме до 40 онлайн. :roll:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

У меня подобное было на подшефном форуме, где модификаций кода, имеющего отношение к сессиям не было. В какой-то момент таблица сессий стала весить порядка 4 мегабайт.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
YarNET
phpBB 2.0.6
Сообщения: 518
Стаж: 19 лет 5 месяцев

Сообщение YarNET »

Siava, Xpert, угу, в том то и дело, что табл. перегружается постоянно. Она динамична, за счет добавления в ней скрипта самоочистки на последние 50 сессий.... Так все ровно как-то не спокойно, имея такую бомбу замедленного действия. В принципе, есть еще две модификации, которые в полной мере компенсируют Last Visit... Но это время на переделку, а его-то как раз таки нет.
Второй форум без Last Visit используется и на нем примерно такое же количество посетителей, однако таблица в среднем имеет не более 100-200 записей к концу дня. Вот такие пироги.
Даже не знаю как правильнее и поступить. Пока выкинул код мода из sessions.php и это отразилось только на регистрации гостей. Т.е. он их теперь не фиксирует. Все остальное сохранилось, т.е. все функции мода в норме. Таблица тоже не перегружается теперь.
Все ровно хотелось бы иметь законченное решение, а не временные меры.
Проверь, за что ты платишь деньги провайдеру?
Тестирование скорости соединения с INNTERNET
sigal
phpBB Plus
Сообщения: 442
Стаж: 19 лет 11 месяцев
Откуда: КПРФ ;)

Сообщение sigal »

Народ, а у меня такая проблема, помогите плз кто знает, оч.надо.. Короче ставил я этот мод, но проблема в том что не помню какую версию, это было давно, и меня в общем-то еще тогда не совсем устраивал вывод последних пользователей. Сейчас у меня вывод на индексе такой:
хх зарегистрированных пользователей посетили форум за последние 24 часа: _перечисление_пользователей_
а мне оч.хотелось бы устроить вывод таким образом:
Сегодня наш форум поcетило пользователей: хх :: зарегистрированных: 10, скрытых: 0 и гостей: 56 , из них 23 в течение последнего часа.
Зарегистрированные пользователи: _перечисление_пользователей_
помогите плз кто знает как доработать?

Добавлено спустя 23 минуты 8 секунд:

такс ... хе-хе
начинаю разбираться. Это оказывается у мня мод стоит не тот , у мня стоит Users of the Day, а для такого вывода как я хочу нужен Last Visit Hack :)
тот уже снес, буду разбираться с этим..

ПыСы: у мня СЕГОДНЯ НОЧЬ МОДОВ!! :P :lol:

Добавлено спустя 47 минут 13 секунд:

НО, наверное сегодня все-таки не возьмусь ставить такой мод, прежде чем его ставить, есть вопрос. Мне не нужны там некоторые функции абсолютно, такие как последний визит в мемберлисте и профиле, цель установки данного мода - выводить на индексе все это дело таким образом:
Наши пользователи оставили сообщений: (кол-во)
Всего зарегистрированных пользователей: (кол-во)
Последний зарегистрированный пользователь: (ник)
--------------------------------------------------------------------
Сегодня наш форум поcетило пользователей: xx :: зарегистрированных: 10, скрытых: 0 и гостей: 56 , из них 23 в течение последнего часа.
Зарегистрированные пользователи: _список_пользователей_
--------------------------------------------------------------------
Сейчас посетителей на форуме: xx, из них зарегистрированных: 0, скрытых: 0 и гостей: 3 [ Администратор ] [ Модератор ]
Больше всего посетителей одновременно (xx) здесь было Пн Мая 16, 2005 11:25 am.
Зарегистрированные пользователи: _список_пользователей_
Итак, 2 вопроса:
1. Возможно ли избежать лишних функций посредством игнорирования файлов:
## memberlist.php
## includes/usercp_viewprofile.php
## templates/subSilver/member_body.tpl
## templates/subSilver/profile_view_body.tpl
... а остальные моднуть по инстркции.. Что из этого выйдет? все будет ок или завернется каша?

2. Может чтобы реализовать вышепоказанное на индексе есть что-то поменьше? или проще, например доработать тот же Users of the Day? т.к я опятьже не горю желанием ставить Last Visit Hack.

Спасибо.
sigal
phpBB Plus
Сообщения: 442
Стаж: 19 лет 11 месяцев
Откуда: КПРФ ;)

Сообщение sigal »

Блин, опять проблема. Подскажите в чем дело, ошибка странная какая-та. Перед тем как закачать обновленные файлы, как и просил обновляю БД форума - last_visit_db_update.php
запускаю файл, пишет:
Общая ошибка
You are not Authorised to do this

хотя в на форуме, как админ, но при запуске в браузере данного файла меня на форуме нет..

Подскажите что делать?

Добавлено спустя 5 минут 5 секунд:

че-то странно ваще.. проверил в других браузерах, таже самая трабла.. При авторизации поставил входить при каждом посещении.. да и ваще не в этом дело, я полгода уже не выходил с форума. так что авторизация не могла вдруг потеряться сразу.

Добавлено спустя 12 минут 46 секунд:

Все, по поводу авторизации при обновке БД разобрался. Файлы все закачал, Но при заходе на титульную страницу все пусто. Где приблизительно рыть проблему? я так полагаю в файлах которые я отметил черным?
## Files To Edit: 14
## index.php
## memberlist.php
## search.php
## admin/admin_board.php
## includes/functions.php
## includes/page_header.php
## includes/sessions.php
## includes/usercp_viewprofile.php
## language/lang_english/lang_admin.php
## language/lang_english/lang_main.php
## templates/subSilver/index_body.tpl
## templates/subSilver/member_body.tpl
## templates/subSilver/profile_view_body.tpl
## templates/subSilver/admin/board_config_body.tpl
Добавлено спустя 29 минут 17 секунд:

уууу... Профиль и Memberlist тоже не работают.. трындец.. :( :(
файлы все перекопал заново - проблемы не нашел. Вроде все правильно обновил. База тоже по ходу обновилась корректно, все процессы синим пометили [Updated]

Добавлено спустя 24 минуты 10 секунд:

а вот это не может быть проблемой?
## MOD Version: 1.2.8
## MOD Compatibility: 2.0.5->2.0.6
izpitera
phpBB 1.4.2
Сообщения: 65
Стаж: 19 лет 4 месяца

Сообщение izpitera »

дядьки выручайте

попробоавал поставить этот мод через изимод
и ненаходит он в sessions.php строчку

Critical Error

FIND FAILED: In file [includes/sessions.php] could not find:

if (
{// (
$last_visit = (
$sql = "UPDATE " . USERS_TABLE . "
SET

Где собака порылась?
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

izpitera
Ну а ручками посмотреть эту сторочку? Насколько помню у вас форум моденный, может другой мод её поменял?
я люблю daft punk | новый sugoi.ru
izpitera
phpBB 1.4.2
Сообщения: 65
Стаж: 19 лет 4 месяца

Сообщение izpitera »

там есть что то боле менее близкое

Код: Выделить всё

if ( $user_id != ANONYMOUS )
	{// ( $userdata['user_session_time'] > $expiry_time && $auto_create ) ? $userdata['user_lastvisit'] : ( 
		$last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time; 
		if (!$admin)
		{


		$sql = "UPDATE " . USERS_TABLE . " 
			SET user_session_time = $current_time, user_session_page = $page_id, user_lastvisit = $last_visit
			WHERE user_id = $user_id";
		if ( !$db->sql_query($sql) )
		{
			message_die(CRITICAL_ERROR, 'Error updating last visit time', '', __LINE__, __FILE__, $sql);
		}

		}

Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5283
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

Сел я и задумался над тем как этот мод работает.. и зачем ему такие конструкции в sessions.php.

Код: Выделить всё

//	if ( $user_id != ANONYMOUS )
//	{
		$last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time;
      if (!$admin)
      {
		$sql = "UPDATE " . USERS_TABLE . "
			SET user_session_time = $current_time, user_session_page = $page_id, user_lastvisit = $last_visit, user_lastlogon = " . time() .  ", user_totallogon=user_totallogon+1
			WHERE user_id = $user_id";
		if ( !$db->sql_query($sql) )
		{
			message_die(CRITICAL_ERROR, 'Error updating last visit time', '', __LINE__, __FILE__, $sql);
		}
      }
      $userdata['user_lastvisit'] = $last_visit;
		//
		// Regenerate the auto-login key
		//
		if ($enable_autologin)
		{
			list($sec, $usec) = explode(' ', microtime());
			mt_srand(hexdec(substr($session_id, 0, 8)) + (float) $sec + ((float) $usec * 1000000));
			$auto_login_key = uniqid(mt_rand(), true);
			if (isset($sessiondata['autologinid']) && (string) $sessiondata['autologinid'] != '')
			{
				$sql = 'UPDATE ' . SESSIONS_KEYS_TABLE . "
					SET last_ip = '$user_ip', key_id = '" . md5($auto_login_key) . "', last_login = $current_time
					WHERE key_id = '" . md5($sessiondata['autologinid']) . "'";
			}
			else
			{
				$sql = 'INSERT INTO ' . SESSIONS_KEYS_TABLE . "(key_id, user_id, last_ip, last_login)
					VALUES ('" . md5($auto_login_key) . "', $user_id, '$user_ip', $current_time)";
			}
			if ( !$db->sql_query($sql) )
			{
				message_die(CRITICAL_ERROR, 'Error updating session key', '', __LINE__, __FILE__, $sql);
			}
			$sessiondata['autologinid'] = $auto_login_key;
			unset($auto_login_key);
		}
		else
		{
			$sessiondata['autologinid'] = '';
		}
//		$sessiondata['autologinid'] = (!$admin) ? (( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key : '') : $sessiondata['autologinid'];
		$sessiondata['userid'] = $user_id;
//	}
То есть, то что раньше эти sql-запросы выполнялись только для зареганных пользователей, то теперь для всех подряд (так как условие закомментировано).
Спрашивается, зачем это надо? :?

Добавлено спустя 26 минут 48 секунд:

И ещё, в phpbbplus применяются интересные штуки типа
Last Visit Mod Caching

Перерыл всё что можно, а нигде об этом ничего не нашёл :?

Добавлено спустя 58 минут 17 секунд:

Нашёл! :D
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Iftin
phpBB 2.0.7
Сообщения: 573
Стаж: 18 лет 11 месяцев
Откуда: Moscow

Сообщение Iftin »

вышла новая версия для форумов 2018-2019
http://mods.db9.dk/viewforum.php?f=1

Добавлено спустя 1 час 47 минут 55 секунд:

Стоит у меня мод версии last_visit_1.2.8em , сейчас вышла новая версия из-а не совместимости версий 2018-2019... Смотрел в архиве с новым модом last_visit_1.2.9em дополнительно облазил сайт официальный, документа апдейта не нашёл... :roll:

что теперь делать, удалять старый и ставить новый?! :oops:

Сейчас стоит старая версия, но она не правильно считает пользователей. :?

http://mods.db9.dk/viewforum.php?f=1
чтобы смотреть, нужна регистрация.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5283
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

Iftin
с 1.2.8 на 1.2.9 ничего в коде мода не изменилось, только сделали совместимым с 2.0.19.
Единственное что посоветую - сверь свой sessions.php с инструкцией от 1.2.9 и исправь, если что не так.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Iftin
phpBB 2.0.7
Сообщения: 573
Стаж: 18 лет 11 месяцев
Откуда: Moscow

Сообщение Iftin »

Siava
ок у меня есть предыдущая версия и новая, буду сверять весь док. установки. Сообщу позже о результате. :wink:
Iftin
phpBB 2.0.7
Сообщения: 573
Стаж: 18 лет 11 месяцев
Откуда: Moscow

Сообщение Iftin »

Проверил. всё так же. Только надо исправить sessions.php и сделать апдейт базы.
Iftin
phpBB 2.0.7
Сообщения: 573
Стаж: 18 лет 11 месяцев
Откуда: Moscow

Сообщение Iftin »

Обновление с 2019->2020 затрагивает строки, не знаю как поступить... :oops:


Код изменения от phpbb.com
файл search.php

Код: Выделить всё

#
#-----[ FIND ]---------------------------------------------
# Line 646
		// Finish building query (for all combinations)
		// and run it ...
		//
		$sql = "SELECT session_id 
			FROM " . SESSIONS_TABLE;
		if ( $result = $db->sql_query($sql) )
		{
			$delete_search_ids = array();
			while( $row = $db->sql_fetchrow($result) )
			{
				$delete_search_ids[] = "'" . $row['session_id'] . "'";
			}

			if ( count($delete_search_ids) )
			{
				$sql = "DELETE FROM " . SEARCH_TABLE . "
					WHERE session_id NOT IN (" . implode(", ", $delete_search_ids) . ")";
				if ( !$result = $db->sql_query($sql) )
				{
					message_die(GENERAL_ERROR, 'Could not delete old search id sessions', '', __LINE__, __FILE__, $sql);
				}
			}

#
#-----[ REPLACE WITH ]---------------------------------------------
#
		// Delete old data from the search result table
		//
		$sql = 'DELETE FROM ' . SEARCH_TABLE . '
			WHERE search_time < ' . ($current_time - (int) $board_config['session_length']);
		if ( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not delete old search id sessions', '', __LINE__, __FILE__, $sql);

#
#-----
у меня же вот такие строки

Код: Выделить всё

// СТРОКА 731 !!!! Finish building query (for all combinations)
		// and run it ...
		//

// Start replacement - Last visit MOD
	$expiry_time = $current_time - $board_config['session_length'];
		$sql = "SELECT session_id
			FROM " . SESSIONS_TABLE ." WHERE session_time>$expiry_time";
// Start replacement - Last visit MOD

		if ( $result = $db->sql_query($sql) )
		{
			$delete_search_ids = array();
			while( $row = $db->sql_fetchrow($result) )
			{
				$delete_search_ids[] = "'" . $row['session_id'] . "'";
			}

			if ( count($delete_search_ids) )
			{
				$sql = "DELETE FROM " . SEARCH_TABLE . "
					WHERE session_id NOT IN (" . implode(", ", $delete_search_ids) . ")";
				if ( !$result = $db->sql_query($sql) )
				{
					message_die(GENERAL_ERROR, 'Could not delete old search id sessions', '', __LINE__, __FILE__, $sql);
				}
			}
		}

		//
		// Store new result data СТРОКА 761 !!!!

Получается это лишнее?


Код: Выделить всё

// Start replacement - Last visit MOD
	$expiry_time = $current_time - $board_config['session_length'];
		$sql = "SELECT session_id
			FROM " . SESSIONS_TABLE ." WHERE session_time>$expiry_time";
// Start replacement - Last visit MOD
?
Аватара пользователя
Neonaft
phpBB 1.4.4
Сообщения: 114
Стаж: 18 лет 2 месяца

Сообщение Neonaft »

Столько дискуссий... Так скажите, разумно ли ставить данный мод только для того, чтобы на главной странице показывалось количество пользователей за день, а точнее эта инфа:

Код: Выделить всё

Всего 81 человек побывало на форуме сегодня :: зарегистрированных: 0, скрытых: 1 и гостей: 80 , 11 из них за последний час
Зарегистрированные пользователи: Нет
Или есть другая рациональная альтернатива?

Вернуться в «Поддержка модов для phpBB 2.0.x»