0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 20501 Просмотров
*

andragor

  • Осваиваюсь на форуме
  • 35
  • 5 / 0
Режим отладки по IP
« : 26.03.2008, 11:40:54 »
Возможно ли в Joomla! 1.0.х включить режим отладки сайта только для одного конкретного IP или как смотреть отладку на live site, чтобы пользователи ее не видели?
« Последнее редактирование: 26.03.2008, 11:44:06 от andragor »
*

Muratty

  • Захожу иногда
  • 130
  • 9 / 0
  • не стреляёте в пианиста, он играет как умеет...
Re: Режим отладки по IP
« Ответ #1 : 26.03.2008, 11:54:39 »
можно, нужно в .htacess прописать
#order "deny,allow"
#deny from "all" - это запрет всем
allow from "000.00.00.0" - это ip разрешен
это закроет всем доступ и одному откроет
можно и так:
#order "deny,allow"
#deny from "000.00.00.0" - это запрет одному
allow from "all" - это разрешен всем остальным
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Режим отладки по IP
« Ответ #2 : 26.03.2008, 12:05:25 »
Хм, вопрос интересный. Стандартного решения для него я не видел, поэтому можно сделать следующий хак:

1. Открываем файл /index.php расположенный в корне сайта
2. В самом низу файла находим строчку:

if ($mosConfig_debug) {

и заменяем ее на

if ($mosConfig_debug && $my->gid == 25) {

После этого можно включать режим отладки - он будет показываться только для пользователей группы Суперадминистратор.

p.s. предложение использовать .htaccess не очень корректное - пользователи тогда не увидят сайта, а тут насколько я понял задачу - администратор хотел бы видеть режим отладки, пока пользователи ходят по сайту... чтобы и они лишнего не видели, и не закрывать сайт на период каких-то опытов.
*

andragor

  • Осваиваюсь на форуме
  • 35
  • 5 / 0
Re: Режим отладки по IP
« Ответ #3 : 26.03.2008, 12:49:37 »
Muratty,
Вариант, но так весь сайт никто не увидит.

smart,
Проверил, работает, супер, спасибо!
Только gid почему-то не пошел, сделал так:
Код
if ($mosConfig_debug && $my->id == 62) {

Еще бы такую же проверку для варнингов сделать, которые есть на некоторых страницах:

/home/httpd/vhosts/site.ru/httpdocs/includes/database.php:433
/home/httpd/vhosts/site.ru/httpdocs/includes/joomla.php:4206
/home/httpd/vhosts/site.ru/httpdocs/includes/joomla.php:4179

Вообще цены бы хаку не было!
*

Physicist

  • Глобальный модератор
  • 984
  • 194 / 0
  • Рябов Денис
Re: Режим отладки по IP
« Ответ #4 : 26.03.2008, 14:20:03 »
Меня кроме собственно запросов еще интересует общее время генерации страницы, время выполнения каждого запроса и в каком файле данный запрос генерируется. Рассказываю, как обычно поступаю я.

1. В /index.php перед строкой
Код
require_once( 'includes/joomla.php' );
добавляем (xxx.xx.xx.xxx — это мой IP)
Код
if($_SERVER['REMOTE_ADDR']=='xxx.xx.xx.xxx')
{
$mosConfig_caching = '0';
$mosConfig_debug   = '1';
set_time_limit(0);
}
а после нее добавляем
Код
$prof = new mosProfiler();

2. В конце /index.php после блока
Код
	echo $database->_ticker . ' queries executed';
echo '<pre>';
  foreach ($database->_log as $k=>$sql) {
  echo $k+1 . "\n" . $sql . '<hr />';
}
echo '</pre>';
добавляем
Код
echo 'The page is generated in '.strip_tags($prof->mark('')).' sec.';

3. В файле /includes/database.php в функции query() меняем блок
Код
		if ($this->_debug) {
$this->_ticker++;
  $this->_log[] = $this->_sql;
}
$this->_errorNum = 0;
$this->_errorMsg = '';
$this->_cursor = mysql_query( $this->_sql, $this->_resource );
на
Код
		if ($this->_debug) {
$this->_ticker++;
list($usec,$sec)=explode(" ",microtime());
$timer1=(float)$usec+(float)$sec;
}
$this->_errorNum = 0;
$this->_errorMsg = '';
$this->_cursor = mysql_query( $this->_sql, $this->_resource );
if ($this->_debug) {
global $prof;
list($usec,$sec)=explode(" ",microtime());
$timer2=(float)$usec+(float)$sec;
$backs=debug_backtrace();
$count=count($backs);
$str='';
for($i=0;$i<$count;$i++)
$str.='<-'.$backs[$i]['file'].':'.$backs[$i]['line'];
$this->_log[] = ($timer1-$prof->start).' sec: ('.($timer2-$timer1).' sec) '.
$this->_sql.' <small>['.$str.']</small>';
}
« Последнее редактирование: 26.03.2008, 18:03:57 от Physicist »
*

andragor

  • Осваиваюсь на форуме
  • 35
  • 5 / 0
Re: Режим отладки по IP
« Ответ #5 : 26.03.2008, 19:06:43 »
Цитировать
Я там точку с запятой пропустил в конце предыдущей строки.

Денис, теперь всё работает. Это что-то с чем-то, столько интересного можно узнать!

Добавил маленькую модификацию, чтобы отладка шла не в строку, а в столбик для удобства чтения:
Код
$str.='<-'.$backs[$i]['file'].':'.$backs[$i]['line'];
         $this->_log[] = ($timer1-$prof->start).' sec: ('.($timer2-$timer1).' sec) '.
         $this->_sql.' <small>['.$str.']</small>';
заменить на:
Код
$str.='<br>'.$backs[$i]['file'].':'.$backs[$i]['line'];
$this->_log[] = ($timer1-$prof->start).' sec: ('.($timer2-$timer1).' sec)<br>'.
$this->_sql.'<small>'.$str.'</small>';

Еще раз спасибо, что решили поделиться столь полезным хаком.
*

Jkr

  • Новичок
  • 1
  • 0 / 0
Re: Режим отладки по IP
« Ответ #6 : 11.12.2010, 23:01:54 »
Замечательный хак!
Извиняюсь за глупый вопрос, но я не совсем понимаю, что именно обозначают 2 числа перед запросом. Например:
Цитировать
0,028769969940186 sec (0,00062012672424316 sec)
Какое-то из них - время на выполнение запроса, а второе? И почему такая разница между этими числами?
Заранее благодарю за разъяснение.
*

Physicist

  • Глобальный модератор
  • 984
  • 194 / 0
  • Рябов Денис
Re: Режим отладки по IP
« Ответ #7 : 19.05.2011, 00:29:09 »
Извиняюсь за глупый вопрос, но я не совсем понимаю, что именно обозначают 2 числа перед запросом. Например:Какое-то из них - время на выполнение запроса, а второе? И почему такая разница между этими числами?
Первое - время, прошедшее с начала генерации страницы, второе - собственно время выполнения запроса.
*

stef21

  • Захожу иногда
  • 156
  • 8 / 0
Re: Режим отладки по IP
« Ответ #8 : 05.04.2013, 16:26:29 »
Подскажите а как вообще расшифровать то что выдается в режиме отладки, например вот это:
-----------------------
6654268
17 зарегистрированных запросов

    /home/www/z157760/blog/libraries/joomla/DATABASE/TABLE.php:247
    /home/www/z157760/blog/libraries/joomla/session/storage/DATABASE.php:70
    Execute time:0.002383 sec.
    SELECT *
      FROM jos_session
      WHERE session_id = 'q3e1r3hn6ppag8v4rf66tr61q5'
    /home/www/z157760/blog/libraries/joomla/application/application.php:768
    /home/www/z157760/blog/libraries/joomla/application/application.php:99
    Execute time:0.000745 sec.
    DELETE
      FROM jos_session
      WHERE ( time < '1365161971' )
« Последнее редактирование: 05.04.2013, 16:29:40 от stef21 »
*

Physicist

  • Глобальный модератор
  • 984
  • 194 / 0
  • Рябов Денис
Re: Режим отладки по IP
« Ответ #9 : 05.04.2013, 17:55:36 »
Для каждого запроса выводится стэк вызовов (имя_файла:номер_строки) и время выполнения.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться