Форум русской поддержки Joomla!® CMS
23.01.2017, 00:33:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Режим отладки по IP

 (Прочитано 17801 раз)
0 Пользователей и 1 Гость смотрят эту тему.
andragor
Захожу иногда
**

Репутация: +5/-0
Offline Offline

Сообщений: 17


« : 26.03.2008, 12:40:54 »

Возможно ли в Joomla! 1.0.х включить режим отладки сайта только для одного конкретного IP или как смотреть отладку на live site, чтобы пользователи ее не видели?
« Последнее редактирование: 26.03.2008, 12:44:06 от andragor » Записан
 
Muratty
Осваиваюсь на форуме
***

Репутация: +9/-0
Offline Offline

Пол: Мужской
Сообщений: 130


не стреляёте в пианиста, он играет как умеет...


« Ответ #1 : 26.03.2008, 12: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
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6850


снова дома...


« Ответ #2 : 26.03.2008, 13:05:25 »

Хм, вопрос интересный. Стандартного решения для него я не видел, поэтому можно сделать следующий хак:

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

if ($mosConfig_debug) {

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

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

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

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

Репутация: +5/-0
Offline Offline

Сообщений: 17


« Ответ #3 : 26.03.2008, 13: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
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #4 : 26.03.2008, 15: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, 19:03:57 от Physicist » Записан
andragor
Захожу иногда
**

Репутация: +5/-0
Offline Offline

Сообщений: 17


« Ответ #5 : 26.03.2008, 20: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
Новичок
*

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 1



« Ответ #6 : 12.12.2010, 00:01:54 »

Замечательный хак!
Извиняюсь за глупый вопрос, но я не совсем понимаю, что именно обозначают 2 числа перед запросом. Например:
Цитировать
0,028769969940186 sec (0,00062012672424316 sec)
Какое-то из них - время на выполнение запроса, а второе? И почему такая разница между этими числами?
Заранее благодарю за разъяснение.
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #7 : 19.05.2011, 00:29:09 »

Извиняюсь за глупый вопрос, но я не совсем понимаю, что именно обозначают 2 числа перед запросом. Например:Какое-то из них - время на выполнение запроса, а второе? И почему такая разница между этими числами?
Первое - время, прошедшее с начала генерации страницы, второе - собственно время выполнения запроса.
Записан
stef21
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 152


« Ответ #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
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #9 : 05.04.2013, 17:55:36 »

Для каждого запроса выводится стэк вызовов (имя_файла:номер_строки) и время выполнения.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet