Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
cyrax_02

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

Recommended Posts

В очередной раз попробовал зайти в админку форума - после ввода логина/пароля и нажатия кнопки "Ввод" сервер зависает (через 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 ввести в браузере непосредственно, то нормально загружается страница ввода логина/пароля.

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

Share this post


Link to post
Share on other sites

Такая проблема у нас была в 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?

  • Upvote 1

Share this post


Link to post
Share on other sites

Оно самое.

 

В приведённом выше коде "перенаправил" код на ветку [ $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 ? Т.е. когда время жизни кэша истечёт, проблема снова себя проявит ?

Share this post


Link to post
Share on other sites

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

Share this post


Link to post
Share on other sites

Кто Вас нагнул? Посмотрел 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/

Share this post


Link to post
Share on other sites

У меня 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'] ) );
		}

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


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

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

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

добавить

 

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

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...