Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Вход в админку IPBoard зависает

Опубликовано:

В очередной раз попробовал зайти в админку форума - после ввода логина/пароля и нажатия кнопки "Ввод" сервер зависает (через 3 минуты - получаю ошибку таймаута). В логах сервера никаких ошибок нет, кроме 3-минутного таймаута.

 

Если под этим же логином/паролем (а также под любыми другими) зайти на форум, никаких проблем не возникает. Кукисы чистил. Проблема наблюдается в разных браузерах.

 

В результате локализации проблемного кода было определено, что в файле admin/sources/classes/output/formats/html/htmlOutput.php зависает команда [ @header( "Location: ".$url ); ] в [htmlOutput::silentRedirect()] (строка 555, в приведённом коде - внизу):

 

/**
 * Silent redirect (Redirects without a screen or other notification)
 *
 * @access	public
 * @param	string		URL
 * @param	string		[sEO Title]
 * @param	string		[send a 301 redirect header first]
 * @param	string		SEO Template
 * @return	mixed
 */
public function silentRedirect( $url, $seoTitle='', $send301=FALSE, $seoTemplate='' )
{

...

	if ( $this->settings['header_redirect'] == 'refresh' )
	{
		@header("Refresh: 0;url=".$url);
	}

	else if ( $this->settings['header_redirect'] == 'html' )
	{
		$url = str_replace( '&', '&', str_replace( '&', '&', $url ) );
		echo("<html><head><meta http-equiv='refresh' content='0; url=$url'></head><body></body></html>");
		exit();
	}
	else
	{
		@header( "Location: ".$url );
	}
	exit();
}

 

 

Если убрать собаку, по-прежнему никаких ошибок в логах не появляется (кроме 3-минутного таймаута). Т.е. происходит именно зависание на этой команде. Непосредственно перед этим header Функция headers_sent() возвращает false

 

URL передаётся такой:

http://www.site.ru/forum/admin/index.php?adsess=b89e113fd5a465ea01806098ac5df83c

Если этот URL ввести в браузере непосредственно, то нормально загружается страница ввода логина/пароля.

В чём может быть проблема ?

Рекомендованные сообщения

Опубликовано:

Такая проблема у нас была в 3.1x из-за проверки лицензии в /admin/applications/core/extensions/dashboardNotifications.php

 

Также может быть из-за запроса $ipsNewsData к www.invisionpower.com в /admin/applications/core/modules_admin/mycp/dashboard.php

В новых версиях больше не используется запрос к www.invisionpower.com/latestversioncheck/ipb30x.php? который заменен на external.ipslink.com/latestversioncheck/ipb30x.php?

Опубликовано:
  • Автор

Оно самое.

 

В приведённом выше коде "перенаправил" код на ветку [ $this->settings['header_redirect'] == 'html' ] - в этом случае браузер получил ответ с [ meta http-equiv='refresh' ] и сразу же начал загрузку указанного в html/head url:

http://www.invisionpower.com/latestversioncheck/ipb30x.php?MzQwMTF8XnxodHRwOi8vd8d3LmthbmFzaC1pbmZvLnJ1L2NvbW13bml5eQ==

 

И вот на этом url сервер снова стал зависать. Если этот URL загрузить в браузере непосредственно, то сначала сервер отдаёт 301 редирект на этот же самый URL, а во второй раз отдаёт 404 страницу.

 

Что касается загрузки этой страницы в classFileManagement.php, то происходило следующее (curl у меня до сих пор не установлен, так что работал метод classFileManagement::_getContentsWithSocket()):

 

- первая загрузка URL выполнялась около 10 секунд (это время занял цикл while( ! feof($fp) && ! $status['timed_out']) )

- вторая загрузка этого же URL (после получения от сервера 301 редиректа на этот же URL) выполнялась минуты 2-2,5 (на что именно ушло это время - не отслеживал)

- после 2-й загрузки снова был получен редирект на этот же URL и - 3-я загрузка URL, которая по понятным причинам в 3 минуты уже не укладывается

 

Т.е. картина складывается так: на сокетах таймауты косячат (файл "classFileManagement.php" у меня пропатченный), в итоге 5 итераций циклических редиректов занимают более 3 минут (что за идиотизм выдавать 301 редирект на этот же URL ???).

 

Здесь можно сделать одно из 2:

- либо уменьшить число итреаций с 5 до 1 (в classFileManagement::_getContentsWithSocket())

- либо в \admin\applications\core\modules_admin\mycp\dashboard.php в методе doExecute() закомментировать 165 строку:

$ipsNewsData['vcheck'] = $classFileManagement->getFileContents( 'http://www.invisionpower.com/latestversioncheck/ipb30x.php?' . base64_encode( ipsRegistry::$vn_full.'|^|'.$this->settings['board_url'] ) );

Сделал 2-е. После этого нормально вошёл в админку.

 

Далее раскомментировал строку, сохранил (и в htmlOutput::silentRedirect() убрал заглушку). Т.е. весь код привёл к изначальному виду.

И по-прежнему нормально выхожу/захожу в админку. В т.ч. и в других браузерах. Я так понимаю это кэш IP.Board ? Т.е. когда время жизни кэша истечёт, проблема снова себя проявит ?

Опубликовано:

закомментировать строку:

В новых версиях больше не используется запрос к www.invisionpower.com/latestversioncheck/ipb30x.php? который заменен на external.ipslink.com/latestversioncheck/ipb30x.php?

 

Я так понимаю это кэш IP.Board ? Т.е. когда время жизни кэша истечёт, проблема снова себя проявит ?

Если строка с проблемным запросом закомментирована - не появится.

Опубликовано:

Да уж прикольно они нагнули владельцев тройки, то же ждал минут 5 загрузки, после загрузки. блок последних новостей с ips кривой и отображаемая страница не совместима со стилями админки и исправлять видимо и не собираются. И ещё прикол они убрали личный кабинет у себя, мне как владельцу тройки теперь не доступен даже лицензионный ключь от неё ))) веселые ребята

Опубликовано:

Да уж прикольно они нагнули владельцев троqки,

Кто Вас нагнул? Посмотрел 3.4.8 и 3.4.9 версии. Все ссылки исправлены.

 

И ещё прикол они убрали личный кабинет у себя, мне как владельцу тройки теперь не доступен даже лицензионный ключь от неё ))) веселые ребята

Все есть https://www.invisionpower.com/clientarea/index.php?app=nexus&module=clients&section=purchases

Опубликовано:

Кто Вас нагнул? Посмотрел 3.4.8 и 3.4.9 версии. Все ссылки исправлены.

 

Все есть https://www.invisionpower.com/clientarea/index.php?app=nexus&module=clients&section=purchases

У меня IP.Board 3.4.5 в 3.4.9 ссылка на какую страницу, что бы самому ручками поправить?

Вчера не чего не было и ссылка на клиентарену вела сюда https://invisionpower.com/clients/

Опубликовано:

У меня IP.Board 3.4.5 в 3.4.9 ссылка на какую страницу, что бы самому ручками поправить?

Во втором посте указана.

 

			if( strpos( $this->settings['base_url'], 'https://' ) !== false )
		{
			$ipsNewsData['news'] = $classFileManagement->getFileContents( 'https://external.ipslink.com/ipboard33/dashboard/index.php?v=' . ipsRegistry::$vn_full );
			$ipsNewsData['vcheck'] = $classFileManagement->getFileContents( 'https://external.ipslink.com/latestversioncheck/ipb30x.php?' . base64_encode( ipsRegistry::$vn_full.'|^|'.$this->settings['board_url'] ) );
		}
		else
		{
			$ipsNewsData['news'] = $classFileManagement->getFileContents( 'http://external.ipslink.com/ipboard33/dashboard/index.php?v=' . ipsRegistry::$vn_full );
			$ipsNewsData['vcheck'] = $classFileManagement->getFileContents( 'http://external.ipslink.com/latestversioncheck/ipb30x.php?' . base64_encode( ipsRegistry::$vn_full.'|^|'.$this->settings['board_url'] ) );
		}

 

Вчера не чего не было и ссылка на клиентарену вела сюда

Может исправили. Они там все перелопатили.

Опубликовано:

Дак это на запрос последней версии, у меня то блок "Последних новостей" поплыл

Опубликовано:

Мы вообщето обсуждаем долгую загрузку страницы при входе в админцентре, со своим блоком вы немного не в теме.

Опубликовано:
  • Автор
Я так понимаю это кэш IP.Board ? Т.е. когда время жизни кэша истечёт, проблема снова себя проявит ?

Да, через некоторое время проблема себя снова проявила. А до этого работал кэш админки.

 

В новых версиях больше не используется запрос к www.invisionpower.com/latestversioncheck/ipb30x.php? который заменен на external.ipslink.com/latestversioncheck/ipb30x.php?

Исправил адрес - проблем пока не наблюдается...

Опубликовано:

Столкнулся в 3.4.5, спасибо за тему.

  • 2 недели спустя...
Опубликовано:

Исправил адрес - проблем пока не наблюдается...

Если совсем нужно избавится от запросов newsdata к ips, ниже

$ipsNewsData = $this->cache->getCache( 'ipsNewsData' );

добавить

 

$ipsNewsData = array( 'time' => time() );

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.