Jump to content

Блок "Последние посетители" 4.6.5

Featured Replies

Posted

Здравствуйте. Заметил странную особенность поведения блока "Последние посетители", который размещается в темах, внизу. Суть в том, что если зайти в тему обычным пользователем и прокрутить страницу вниз, то там всегда будет 0 посетителей. Вот:

20210802190834.jpg.01ffd688aa2a72a1101ddb8166e6a0bb.jpg

Но! Если выйти на главную, спустится вниз, и нажать на "Кто в онлайне > Показать всех" и оттуда перейти в тему, то ник внизу у блока отображается. Вот:

20210802191324.jpg.ca2b35748f94eeb170b7ef4024d17a14.jpg

Почему так? Это баг или этот блок нужно как-то настраивать в админке?

Edited by WebUser

  • Replies 94
  • Просмотров 42,5k
  • Created
  • Последний ответ

Лучшие авторы в теме

Most Popular Posts

  • BlackShot the.bunin WebUser  /applications/core/widgets/activeUsers.php заменить всё на: <?php /** * @brief activeUsers Widget * @author <a href='https://www.invisioncommunity.com'

  • BlackShot держи.    (k4) ActiveUsers NoCache 1.0.0.xml

  • хм, у меня тоже было мгновенно пару версий назад. сейчас проверил на трёх своих форумах, и везде отображается только спустя минуту кэша. 

Posted Images

  • Author

У вас на форуме, я заметил, что как только входишь в тему, то ник тут же  отображается внизу, мгновенно. Это стандартный блок "Последние посетители"? Или вы его как-то модифицировали?

004.jpg.256960906d5c22dd8eb2d9c2398e0d3a.jpg

Я наше вот такой параметр в админке, отвечающий за кэширование блоков:

005.jpg.461c9d53eee66286cd006f860d977104.jpg

Поставил 1 минуту (меньше поставить невозможно) но всё равно при входе в тему "0 пользователей онлайн" и только спустя примерно 2-3 минуты (если периодически обновлять страницу F5), я там появляюсь как пользователь (или другие тестовые пользователи). В общем с очень большой задержкой происходит обработка этой задачи.

Edited by WebUser

  On 02.08.2021 at 20:07, WebUser said:

У вас на форуме, я заметил, что как только входишь в тему, то ник тут же  отображается внизу, мгновенно.

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

  • Author
  On 02.08.2021 at 20:27, by_ix said:

сейчас проверил на трёх своих форумах, и везде отображается только спустя минуту кэша

спасибо. значит дело в версии. будем надеяться, что со временем починят 👍

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

Да, у меня тоже самое, проверил) Только не пойму немного, какое это имеет значение, пусть даже через 1 минуту? :) Объясните

  • Author
  On 02.08.2021 at 20:31, by_ix said:

хотя странно, это же тоже блок и он тоже должен кэшироваться заданное в настройках время, но он почему-то обновлялся сразу раньше.

да, а еще странно то, что если перейти в тему через главную: "Кто в онлайне > Показать всех" и там щелкнуть на тему, в которой сидит человек - то при переходе сразу будет его ник! то есть мгновенно происходит обновление. такое ощущение, что у движка разные приоритеты задач на разные блоки

  On 02.08.2021 at 20:33, the.bunin said:

Да, у меня тоже самое, проверил) Только не пойму немного, какое это имеет значение, пусть даже через 1 минуту? :) Объясните

ну знаете. наверное это дело привычки. у нас вот до этого форум был на phpbb. он всегда мгновенно показывал, когда народ сидит в теме, когда уходит с форума и тд. я понимаю, чэто совсем другой движок, но как уже сказал - дело привычки. для меня лично очень не привычно входить в тему и не видеть, кто тут прямо сейчас сидит. а тех кого я вижу - это по сути следы тех, кто тут был 1-2 минуты назад )))

  On 02.08.2021 at 20:34, WebUser said:

он всегда мгновенно показывал

тут больше на оптимизацию рассчитано, чтоб форум не обновлял каждый блок каждую секунду.
но можно было и сделать возможность ставить эту одну секунду, а не минуту. всё-таки, каждому своё. 

  On 02.08.2021 at 20:34, WebUser said:

ну знаете. наверное это дело привычки. у нас вот до этого форум был на phpbb. он всегда мгновенно показывал, когда народ сидит в теме, когда уходит с форума и тд. я понимаю, чэто совсем другой движок, но как уже сказал - дело привычки. для меня лично очень не привычно входить в тему и не видеть, кто тут прямо сейчас сидит. а тех кого я вижу - это по сути следы тех, кто тут был 1-2 минуты назад )))

тут согласен)

  On 02.08.2021 at 20:31, by_ix said:

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

Так и не узнали? Тоже стал обращать внимание, что даже в общем блоке "Кто онлайн" появляться пользователи стали только спустя пару минут. Вот на мафии смотрю с этим проблем нет @Respected 🤔

  On 02.08.2021 at 20:31, by_ix said:

although it is strange, this is also a block and it should also be cached for the time specified in the settings, but for some reason it was updated immediately earlier.
and in general, it would be interesting to know how to change the cache lifetime to below a minute?

Точно.

Может быть, @accop знает, как это исправить.

  • 2 недели спустя...

BlackShot the.bunin WebUser 

/applications/core/widgets/activeUsers.php
заменить всё на:

<?php
/**
 * @brief		activeUsers Widget
 * @author		<a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
 * @copyright	(c) Invision Power Services, Inc.
 * @license		https://www.invisioncommunity.com/legal/standards/
 * @package		Invision Community
 * @since		19 Nov 2013
 */

namespace IPS\core\widgets;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}

/**
 * activeUsers Widget
 */
class _activeUsers extends \IPS\Widget
{
	/**
	 * @brief	Widget Key
	 */
	public $key = 'activeUsers';
	
	/**
	 * @brief	App
	 */
	public $app = 'core';
	
	/**
	 * @brief	Plugin
	 */
	public $plugin = '';

	/**
	 * Render a widget
	 *
	 * @return	string
	 */
	public function render()
	{
		/* Do we have permission? */
		if ( !\IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'online' ) ) )
		{
			return "";
		}
		
		$members     = array();
		$memberCount = 0;
				
		/* Build WHERE clause */
		$parts = parse_url( (string) \IPS\Request::i()->url()->setPage() );
		
		if ( \IPS\Settings::i()->htaccess_mod_rewrite )
		{
			$url = $parts['scheme'] . "://" . $parts['host'] . ( isset( $parts['port'] ) ? ':' . $parts['port'] : '' ) . $parts['path'];
		}
		else
		{
			$url = $parts['scheme'] . "://" . $parts['host'] . ( isset( $parts['port'] ) ? ':' . $parts['port'] : '' ) . $parts['path'] . ( isset( $parts['query'] ) ? '?' . $parts['query'] : '' );
		}
		
		$members = \IPS\Session\Store::i()->getOnlineMembersByLocation( \IPS\Dispatcher::i()->application->directory, \IPS\Dispatcher::i()->module->key, \IPS\Dispatcher::i()->controller, \IPS\Request::i()->id, $url );
		
		if ( isset( $members[ \IPS\Member::loggedIn()->member_id ] ) )
		{
			unset( $members[ \IPS\Member::loggedIn()->member_id ] );
		}
		
		$memberCount = \count( $members );
		
		/* If it's on the sidebar (rather than at the bottom), we want to limit it to 60 so we don't take too much space */
		if ( $this->orientation === 'vertical' and \count( $members ) >= 60 )
		{
			$members = \array_slice( $members, 0, 60 );
		}

		if( \IPS\Member::loggedIn()->member_id )
		{
			if( !isset( $members[ \IPS\Member::loggedIn()->member_id ] ) )
			{
				$memberCount++;
			}

			$members = array_merge( array( \IPS\Member::loggedIn()->member_id => array(
				'member_id'			=> \IPS\Member::loggedIn()->member_id,
				'member_name'		=> \IPS\Member::loggedIn()->name,
				'seo_name'			=> \IPS\Member::loggedIn()->members_seo_name,
				'member_group'		=> \IPS\Member::loggedIn()->member_group_id,
				'in_editor'			=> 0
			) ), $members );
		}

		/* Display */
		return $this->output( $members, $memberCount );
	}
}

 

by_ix а к модулю Кто в онлайне эти изменения тоже относятся?

У меня просто с ним ничего не изменилось, так же отображается только через пару минут

Или надо в той же папке в файле whosOnline.php внести те же изменения?

by_ix сейчас собрался новый патч ставить и ахтунг, не даёт продолжить установку)

image.thumb.png.815eab70af7a080b26a0638e1450cbca.png

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

  On 19.08.2021 at 09:35, by_ix said:

@the.bunin верни как было. после установки обратно поставишь. 

Вернул, тоже самое...

by_ix всё, порешал вопрос) Оказывается откатывал на стандартное содержимое в файле из бекапа и никак не мог понять, почему не применяется 🤣 ржу с себя)

но вопрос остаётся....как это сделать в блоке Кто онлайн, тут для меня важнее, чем просмотр темы

при заливе файлов обновы, этот файл заменяется на новый сразу же. тебе не нужна старая версия. залей ласт обнову с заменой и начни установку заново.

Edited by by_ix

  On 19.08.2021 at 09:50, by_ix said:

при заливе файлов обновы, этот файл заменяется на новый сразу же. тебе не нужна старая версия. залей ласт обнову с заменой и начни установку заново.

всё норм, обновился уже....так по поводу Кто в онлайне, чего скажешь? :)

the.bunin 

Спойлер

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.