Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
cyrax_02

Вход в админку 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?

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Оно самое.

 

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

Поделиться сообщением


Ссылка на сообщение

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

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

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

добавить

 

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

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

×
×
  • Создать...