WebUser Опубликовано 2 августа, 2021 Поделиться Опубликовано 2 августа, 2021 (изменено) Здравствуйте. Заметил странную особенность поведения блока "Последние посетители", который размещается в темах, внизу. Суть в том, что если зайти в тему обычным пользователем и прокрутить страницу вниз, то там всегда будет 0 посетителей. Вот: Но! Если выйти на главную, спустится вниз, и нажать на "Кто в онлайне > Показать всех" и оттуда перейти в тему, то ник внизу у блока отображается. Вот: Почему так? Это баг или этот блок нужно как-то настраивать в админке? Изменено 2 августа, 2021 пользователем WebUser Artemka и by_ix 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
WebUser Опубликовано 2 августа, 2021 Автор Поделиться Опубликовано 2 августа, 2021 (изменено) У вас на форуме, я заметил, что как только входишь в тему, то ник тут же отображается внизу, мгновенно. Это стандартный блок "Последние посетители"? Или вы его как-то модифицировали? Я наше вот такой параметр в админке, отвечающий за кэширование блоков: Поставил 1 минуту (меньше поставить невозможно) но всё равно при входе в тему "0 пользователей онлайн" и только спустя примерно 2-3 минуты (если периодически обновлять страницу F5), я там появляюсь как пользователь (или другие тестовые пользователи). В общем с очень большой задержкой происходит обработка этой задачи. Изменено 2 августа, 2021 пользователем WebUser Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
BlackShot Опубликовано 2 августа, 2021 Поделиться Опубликовано 2 августа, 2021 Я думаю, что столкнулся с той же проблемой. На обновление уходит много времени. Думаю, это началось после последнего обновления IPS, я не уверен. WebUser 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
WebUser Опубликовано 2 августа, 2021 Автор Поделиться Опубликовано 2 августа, 2021 @BlackShot спасибо что написали. Теперь я хоть буду знать, что проблема не у меня одного. BlackShot 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 2 августа, 2021 Поделиться Опубликовано 2 августа, 2021 18 минут назад, WebUser сказал: У вас на форуме, я заметил, что как только входишь в тему, то ник тут же отображается внизу, мгновенно. хм, у меня тоже было мгновенно пару версий назад. сейчас проверил на трёх своих форумах, и везде отображается только спустя минуту кэша. WebUser и SlawkA 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
WebUser Опубликовано 2 августа, 2021 Автор Поделиться Опубликовано 2 августа, 2021 Только что, by_ix сказал: сейчас проверил на трёх своих форумах, и везде отображается только спустя минуту кэша спасибо. значит дело в версии. будем надеяться, что со временем починят 👍 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 2 августа, 2021 Поделиться Опубликовано 2 августа, 2021 хотя странно, это же тоже блок и он тоже должен кэшироваться заданное в настройках время, но он почему-то обновлялся сразу раньше. и вообще, было бы интересно узнать, как изменить время жизни кэша на ниже минуты? BlackShot и SlawkA 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Mano Опубликовано 2 августа, 2021 Поделиться Опубликовано 2 августа, 2021 Да, у меня тоже самое, проверил) Только не пойму немного, какое это имеет значение, пусть даже через 1 минуту? Объясните Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
WebUser Опубликовано 2 августа, 2021 Автор Поделиться Опубликовано 2 августа, 2021 1 минуту назад, by_ix сказал: хотя странно, это же тоже блок и он тоже должен кэшироваться заданное в настройках время, но он почему-то обновлялся сразу раньше. да, а еще странно то, что если перейти в тему через главную: "Кто в онлайне > Показать всех" и там щелкнуть на тему, в которой сидит человек - то при переходе сразу будет его ник! то есть мгновенно происходит обновление. такое ощущение, что у движка разные приоритеты задач на разные блоки 1 минуту назад, the.bunin сказал: Да, у меня тоже самое, проверил) Только не пойму немного, какое это имеет значение, пусть даже через 1 минуту? Объясните ну знаете. наверное это дело привычки. у нас вот до этого форум был на phpbb. он всегда мгновенно показывал, когда народ сидит в теме, когда уходит с форума и тд. я понимаю, чэто совсем другой движок, но как уже сказал - дело привычки. для меня лично очень не привычно входить в тему и не видеть, кто тут прямо сейчас сидит. а тех кого я вижу - это по сути следы тех, кто тут был 1-2 минуты назад ))) Mano и by_ix 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 2 августа, 2021 Поделиться Опубликовано 2 августа, 2021 4 минуты назад, WebUser сказал: он всегда мгновенно показывал тут больше на оптимизацию рассчитано, чтоб форум не обновлял каждый блок каждую секунду. но можно было и сделать возможность ставить эту одну секунду, а не минуту. всё-таки, каждому своё. SlawkA и WebUser 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Mano Опубликовано 2 августа, 2021 Поделиться Опубликовано 2 августа, 2021 45 минут назад, WebUser сказал: ну знаете. наверное это дело привычки. у нас вот до этого форум был на phpbb. он всегда мгновенно показывал, когда народ сидит в теме, когда уходит с форума и тд. я понимаю, чэто совсем другой движок, но как уже сказал - дело привычки. для меня лично очень не привычно входить в тему и не видеть, кто тут прямо сейчас сидит. а тех кого я вижу - это по сути следы тех, кто тут был 1-2 минуты назад ))) тут согласен) WebUser 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Mano Опубликовано 6 августа, 2021 Поделиться Опубликовано 6 августа, 2021 В 02.08.2021 в 23:31, by_ix сказал: хотя странно, это же тоже блок и он тоже должен кэшироваться заданное в настройках время, но он почему-то обновлялся сразу раньше. и вообще, было бы интересно узнать, как изменить время жизни кэша на ниже минуты? Так и не узнали? Тоже стал обращать внимание, что даже в общем блоке "Кто онлайн" появляться пользователи стали только спустя пару минут. Вот на мафии смотрю с этим проблем нет @Respected 🤔 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 6 августа, 2021 Поделиться Опубликовано 6 августа, 2021 @the.bunin пока руки не дошли до этого. но, наверное, где-то в сторону тасков копать надо. мб тут ещё крон включён. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
BlackShot Опубликовано 8 августа, 2021 Поделиться Опубликовано 8 августа, 2021 On 8/2/2021 at 5:31 PM, 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 знает, как это исправить. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 18 августа, 2021 Поделиться Опубликовано 18 августа, 2021 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 ); } } BlackShot, cyr4x, Mano и 1 другой 2 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
WebUser Опубликовано 19 августа, 2021 Автор Поделиться Опубликовано 19 августа, 2021 @by_ix спасибо! Работает! Теперь при входе в любую тему сразу показывает, кто там сидит. 👍 by_ix 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Mano Опубликовано 19 августа, 2021 Поделиться Опубликовано 19 августа, 2021 by_ix а к модулю Кто в онлайне эти изменения тоже относятся? У меня просто с ним ничего не изменилось, так же отображается только через пару минут Или надо в той же папке в файле whosOnline.php внести те же изменения? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 19 августа, 2021 Поделиться Опубликовано 19 августа, 2021 @the.bunin нет относятся. ему тоже сделали кэширование, поэтому и отображается не сразу. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Mano Опубликовано 19 августа, 2021 Поделиться Опубликовано 19 августа, 2021 by_ix сейчас собрался новый патч ставить и ахтунг, не даёт продолжить установку) Блин, скиньте оригинальное содержимое этого файла плиз....в бекапе старая версия видимо у меня, не могу обновить до нового патча Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 19 августа, 2021 Поделиться Опубликовано 19 августа, 2021 @the.bunin верни как было. после установки обратно поставишь. и вообще, почему лезет ошибка эта, если при обнове все файлы с приложений заменяются. мб ты замену не сделал? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Mano Опубликовано 19 августа, 2021 Поделиться Опубликовано 19 августа, 2021 5 минут назад, by_ix сказал: @the.bunin верни как было. после установки обратно поставишь. Вернул, тоже самое... by_ix всё, порешал вопрос) Оказывается откатывал на стандартное содержимое в файле из бекапа и никак не мог понять, почему не применяется 🤣 ржу с себя) но вопрос остаётся....как это сделать в блоке Кто онлайн, тут для меня важнее, чем просмотр темы Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 19 августа, 2021 Поделиться Опубликовано 19 августа, 2021 (изменено) при заливе файлов обновы, этот файл заменяется на новый сразу же. тебе не нужна старая версия. залей ласт обнову с заменой и начни установку заново. Изменено 19 августа, 2021 пользователем by_ix Mano 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Mano Опубликовано 19 августа, 2021 Поделиться Опубликовано 19 августа, 2021 8 минут назад, by_ix сказал: при заливе файлов обновы, этот файл заменяется на новый сразу же. тебе не нужна старая версия. залей ласт обнову с заменой и начни установку заново. всё норм, обновился уже....так по поводу Кто в онлайне, чего скажешь? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 19 августа, 2021 Поделиться Опубликовано 19 августа, 2021 вечером проверю, кину. WebUser и Mano 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 19 августа, 2021 Поделиться Опубликовано 19 августа, 2021 the.bunin Спойлер <?php /** * @brief whosOnline 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 28 Jul 2014 */ 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; } /** * whosOnline Widget */ class _whosOnline extends \IPS\Widget { /** * @brief Widget Key */ public $key = 'whosOnline'; /** * @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 ""; } /* Init */ $members = array(); $anonymous = 0; $users = \IPS\Session\Store::i()->getOnlineUsers( \IPS\Session\Store::ONLINE_MEMBERS, 'desc', NULL, NULL, TRUE ); foreach( $users as $row ) { switch ( $row['login_type'] ) { /* Not-anonymous Member */ case \IPS\Session\Front::LOGIN_TYPE_MEMBER: if ( $row['member_id'] != \IPS\Member::loggedIn()->member_id ) // We add them manually to make sure they go at the top of the list { if ( $row['member_name'] ) { $members[ $row['member_id'] ] = $row; } } break; /* Anonymous member */ case \IPS\Session\Front::LOGIN_TYPE_ANONYMOUS: $anonymous += 1; break; } } $memberCount = \count( $members ); /* Get an accurate guest count */ $guests = \IPS\Session\Store::i()->getOnlineUsers( \IPS\Session\Store::ONLINE_GUESTS | \IPS\Session\Store::ONLINE_COUNT_ONLY, 'desc', NULL, NULL, TRUE ); /* 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 ); } /* Add ourselves at the top of the list */ if( \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 ) ), $members ); } /* Display */ return $this->output( $members, $memberCount, $guests, $anonymous ); } } BlackShot и Mano 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.