Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Профайлер для скриптов на PHP (Дмитрий Котеров)
Goto page Previous  1, 2
Author Message
SyVa
Участник форума



Joined: 20 Jun 2003
Posts: 37
Карма: 0
   поощрить/наказать


PostPosted: Wed Jun 09, 2004 1:25 am ()
   Post subject:
Reply with quote

Скачал, заменил - эффект нулевой (они одинаковые)
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Jun 09, 2004 4:19 pm (спустя 14 часов 53 минуты)
   Post subject:
Reply with quote

В общем, у меня тоже, оказывается, не работает. То ли разработчики DBG напортачили, то ли PHP, но итог таков, что профайлер не работает ни в одной из dll-ей стандартного дистрибутива DBG с dd.cron.ru/dbg/ (я перепробовал все), и единственная рабочая версия — та, которую я тут и прикладываю (откуда она — черт ее знает, не могу найти, где взял).


php_dbg-worked-php4.3.6.zip
 Description:
Единственная рабочая версия DBG (работает профайлер) для PHP 4.3.6.

Download
 Filename:  php_dbg-worked-php4.3.6.zip
 Filesize:  22.08 KB
 Downloaded:  1030 Time(s)

Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Jun 09, 2004 4:25 pm (спустя 6 минут)
   Post subject:
Reply with quote

Возможно, Вам стоит попробовать поставить самую последнюю версию PHP и взять DBG из стандартного дистрибутива для нее, авось заработает. Не исключено, что это ошибка PHP, а не DBG.
Back to top
View user's profile Send private message Send e-mail
jester
Заглянувший



Joined: 30 Apr 2004
Posts: 3
Карма: 0
   поощрить/наказать


PostPosted: Wed Jun 09, 2004 7:09 pm (спустя 2 часа 43 минуты)
   Post subject:
Reply with quote

Вот что интересно. Пользуюсь PHPed-ом. Когда отлаживаю пошагово скрипт с этим профайлером - работает. Заускаю скрипт из броузера - пустая таблица.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Jun 09, 2004 7:36 pm (спустя 27 минут)
   Post subject:
Reply with quote

Кстати, приложенная мной в последний раз dll-ка не будет работать с PHPEd-ом — слишком старая.
Про PHPEd тут: forum.dklab.ru/viewtopic.php?p=51817
Похоже, это единственный в мире нормальный отладчик для удаленных скриптов на PHP.
Back to top
View user's profile Send private message Send e-mail
SyVa
Участник форума



Joined: 20 Jun 2003
Posts: 37
Карма: 0
   поощрить/наказать


PostPosted: Thu Jun 10, 2004 5:06 am (спустя 9 часов 29 минут)
   Post subject:
Reply with quote

Действительно с этой библиотекой заработало
Back to top
View user's profile Send private message Send e-mail
Ramzes
Участник форума



Joined: 30 May 2004
Posts: 66
Карма: 5
   поощрить/наказать


PostPosted: Fri Jun 11, 2004 7:48 pm (спустя 1 день 14 часов 42 минуты)
   Post subject:
Reply with quote

Дмитрий Котеров:
Спасибо! В браузере правда не заработало, а вот в кривом дебагере Expert Editor'а заработало! Теперь я смог понять в чем у меня проблема!!! Люди! Не пользуйтесь fgets!!! Эта бестолковая функция не завершается после нахождение \n, а продолжает читать, пока не не достигнет предела указанного во втором параметре! Будте аккуратны и используйте лучше свои собственные функции для чтения строки!
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Jun 11, 2004 8:04 pm (спустя 16 минут)
   Post subject:
Reply with quote

Ну, она-то, может, и продолжает читать, но только остаток все равно остается в буфере.

Вообще, самый точный профайлер, который я видел, — в Zend Studio. Это единственное, что там работает нормально. В PHPEd-е, мне кажется, профайлер врет.
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Sun Jun 13, 2004 7:09 pm (спустя 1 день 23 часа 5 минут)
   Post subject:
Reply with quote

В PHP 4.3.7 вид таблички (с рабочей библиотекой) был усеченный (только серый кус от test.php ::main). Я только потом догадался в лог глянуть
Code (any language): скопировать код в буфер обмена
PHP Warning:  Call-time pass-by-reference has been deprecated - argument passed by value;  If you would like to pass it by reference,
modify the declaration of dbg_get_context_name().  If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file.  However, future versions may not support this any longer.
Без разницы, кстати, писать там True или On ...
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Mon Jun 14, 2004 11:49 am (спустя 16 часов 39 минут)
   Post subject:
Reply with quote

В версии 4.3.2 то же самое

И как-то есть из этого выход, или это все, конец???
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Jun 14, 2004 3:40 pm (спустя 3 часа 51 минуту)
   Post subject:
Reply with quote

Гость:
Так в warning-сообщении же сказано! Я поправил php.ini - и все заработало (с правильной библиотекой!).. Кстати, за счет ini_set эта опция не меняется (по меньшей мере, не отключается). Во всяком случае, у меня не вышло...
Back to top
View user's profile Send private message
victor_as
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Jun 23, 2004 3:12 pm (спустя 8 дней 23 часа 31 минуту)
   Post subject:
Reply with quote

Привет

Прежде всего спасибо Дмитрию Котерову за его скриптец (и вообще за тему)

Я установил расширение и опробовал его скрипт - все работает замечательно. Вот только медленно - как он и писал.

Мне понадобилось оптимизировать довольно большой проект, однако работа скрипта занимала 320 000 - 350 000 миллисекунд. Это смотрелось тоскливо... Поковырявшись, я выяснил, что основную долю времени отнимает функция dbg_get_context_name([1], [2]). Эта функция возвращает путь к используемым файлам. По-моему эта информация актуальна разве что для "узких мест", а для быстрых фрагментов кода она мало полезна. Так что я решил получать ее только если фрагмент кода занимает времени не меньше указаного процента. Также мне показалось, что удобнее не группировать в таблице строки по функциям, а сортировать их по времени исполнения как есть - так лучше видны "истинные лидеры хитпарада".

В результате мне удалось сократить время исполнения до 3000 - 4000 ms.

Если кому покажется полезным - то привожу код целиком.

Файл "_profiler.inc":
Code (any language): скопировать код в буфер обмена
<?php
ini_set('allow_call_time_pass_reference', 'On');


function profiler_getResults( /*float*/ $visibleContextPercent = null )
        {
        $DEFAULT_PERSENT = 1.0;
       
                if( is_null($visibleContextPercent) || !is_float($visibleContextPercent) || $visibleContextPercent < 0 )
                $visibleContextPercent = $DEFAULT_PERSENT;
                if( 100 < $visibleContextPercent) $visibleContextPercent = 100;
       
        dbg_get_profiler_results(& $data);
       
        set_time_limit(0.25*sizeof($data['mod_no']));
       
        $results = array(
                'fileIds'    => $data['mod_no'],
                'contextIds' => array(),
                'lines'      => $data['line_no'],
                'times'      => $data['tm_sum'],
                'hits'       => $data['hit_count'],
                'totalTime'  => array_sum($data['tm_sum'])
                );
       
        $time = $results['totalTime']*$visibleContextPercent/100;
       
                foreach( $results['fileIds'] as $i => $fileId )
                {
                        if( $time <= $results['times'][$i] )
                        {
                        dbg_get_source_context($fileId, $results['lines'][$i], & $contextId);
                        $results['contextIds'][$i] = $contextId;
                        }
                        else $results['contextIds'][$i] = null;
                }
       
        return $results;
        }


function profiler_getFileNames( /*array collection*/ $results, /*string*/ $root = null )
        {
        $names = array();
        $ids = array_values(array_unique($results['fileIds']));
       
        $count = sizeof($ids);
        $length = !is_null($root) ? strlen($root) : null;
                for( $i = 0 ; $i < $count ; $i++ )
                {
                dbg_get_module_name($ids[$i], & $name);
                $name = str_replace('\\', '/', $name);
                        if( !is_null($root) && strncmp($name, $root, $length) == 0 ) $name = substr($name, $length);
                $names[$ids[$i]] = $name;
                }
       
        return $names;
        }


function profiler_getContextNames( /*array collection*/ $results )
        {
        $names = array();
        $ids = array_values(array_unique($results['contextIds']));
       
        $count = sizeof($ids);
                for( $i = 0 ; $i < $count ; $i++ )
                {
                        if( is_null($ids[$i]) ) continue;
                dbg_get_context_name($ids[$i], & $name);
                        if( is_null($name) || $name == '' ) $name = '::main';
                $names[$ids[$i]] = $name;
                }
       
        return $names;
        }


function profiler_getOrder( /*array collection*/ $results )
        {
        $orders = $results['times'];
        arsort($orders, SORT_NUMERIC);
        return array_keys($orders);
        }


function profiler_output( /*int*/ $maxLines = 100, /*float*/ $visibleContextPercent = null )
        {
        $siteRoot = defined('ROOT') ? str_replace('\\', '/', realpath(getcwd().'/'.ROOT)).'/' : null;
        $results  = profiler_getResults($visibleContextPercent);
        $files    = profiler_getFileNames($results, $siteRoot);
        $contexts = profiler_getContextNames($results);
?>
<br>
<table style="background:#ffffff; font:12px courier" cellspacing="1" cellpadding="3" border="0" align="center">
<caption style="background:#ffffff">Total time: <?= number_format(1000*$results['totalTime'], 3) ?> ms</caption>
<col align="right">
<col>
<col>
<col align="right">
<col align="right">
<col align="right">
<col align="right">
<thead>
        <tr style="background:#808080; color:#FFFFFF">
                <td align="center">#</td>
                <td align="center">file</td>
                <td align="center">context</td>
                <td align="center">line</td>
                <td align="center">hits</td>
                <td align="center">time, ms</td>
                <td align="center">time, %</td>
        </tr>
</thead>
<tbody>
<?php
                foreach( profiler_getOrder($results) as $r => $i )
                {
                        if( $maxLines <= $r ) break;
?>
        <tr<?= $r%2 == 0 ? '' : ' style="background:#e0e0e0"' ?>>
                <td><?= $r + 1 ?></td>
                <td><?= $files[$results['fileIds'][$i]] ?></td>
                <td><?= is_null($results['contextIds'][$i]) ? '&mdash;' : $contexts[$results['contextIds'][$i]] ?></td>
                <td><?= $results['lines'][$i] ?></td>
                <td><?= $results['hits'][$i] ?></td>
                <td><?= number_format(1000*$results['times'][$i], 3) ?></td>
                <td><?= number_format(100*$results['times'][$i]/$results['totalTime'], 3) ?></td>
        </tr>
<?php
                }
?>
</tbody>
</table>
<br>
<?php
        }
?>
И использование:
Code (any language): скопировать код в буфер обмена
<?php
require_once('_profiler.inc');

profiler_output(100, 1.0);

?>
Back to top
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Sun Jan 09, 2005 9:37 am (спустя 6 месяцев 15 дней 18 часов 25 минут; написано за 25 секунд)
   Post subject:
Reply with quote

victor_as:
Что означает переменная $visibleContextPercent?
Back to top
View user's profile Send private message
urisoft
Заглянувший



Joined: 20 May 2005
Posts: 12
Карма: 2
   поощрить/наказать


PostPosted: Mon May 23, 2005 7:27 pm (спустя 4 месяца 14 дней 9 часов 49 минут; написано за 12 минут 3 секунды)
   Post subject:
Reply with quote

В свое время меня очень выручил профайлер Дмитрия Котерова. Один минус - НУ ОЧЕНЬ ТОРМОЗНОЙ.
Решил тут выложить "свой" вариант профайлера. "Свой" в кавычках потому, что это модифицированный код Дмитрия Котерова (см. первый пост).
Главное и неоспоримое :) преимущество "моего" кода это то, что работает этот код раз в 30-40 быстрее при той же функциональности. Ни о каких секундах даже речи нет. Собственно он работает даже быстрее чем вышеприведенный код от victor_as.
Плюс я добавил вывод списка всех подключаемых скриптов. В архиве, в тексте кода есть еще описание функций модуля php_dbg и краткая инструкция по применению.

Понимаю, что сейчас есть и встроенные в IDE профайлеры. Но не пропадать же коду. Может кому понадобиться. :)

profiler.php
Code (php): скопировать код в буфер обмена
<?php

// *****************************************************************************
// profiler.php
// *****************************************************************************

function dbg_profile()
{
        $dbg_results = array (www.php.net/array)();
        $dbg_modules = array (www.php.net/array)();
        $dbg_context = array (www.php.net/array)();
        $dbg_lines   = array (www.php.net/array)();

        dbg_get_profiler_results(&$dbg_results);
        dbg_get_all_module_names(&$dbg_modules);
        dbg_get_all_contexts(0, &$dbg_context);
        dbg_get_all_source_lines(0, &$dbg_lines);

        $dbg_complete = array (www.php.net/array)();
        foreach ($dbg_lines['mod_no'] as $id => $val)
        {
                $dbg_complete[$val][$dbg_lines['line_no'][$id]] = $dbg_lines['ctx_no'][$id];
        }

        $results = array (www.php.net/array)();

        foreach ($dbg_results['line_no'] as $idx => $line_no)
        {
                $mod_no   = $dbg_results['mod_no'][$idx];
                $mod_name = $dbg_modules['mod_name'][$mod_no - 1];

                $hit_cnt  = $dbg_results["hit_count"][$idx];
                $time_sum = $dbg_results["tm_sum"][$idx] * 1000;
                $time_min = $dbg_results["tm_min"][$idx] * 1000;
                $time_max = $dbg_results["tm_max"][$idx] * 1000;

                $ctx_id = $dbg_complete[$mod_no][$line_no];

                $ctx_name = $dbg_context['ctx_name'][$ctx_id - 1];

                if ($ctx_name == "")
                {
                        $ctx_name = '::main';
                }

                $cont =& $results[$ctx_name];

                if (!@$cont) $cont = array (www.php.net/array)(
                                                                                "file" => $mod_name,
                                                                                'hit_cnt' => 0,
                                                                                'time_sum' => 0,
                                                                                'lines' => array (www.php.net/array)()
                                                                                );

                $cont['time_sum'] += $time_sum;

                $cont['lines'][$line_no] = array (www.php.net/array)(
                                                                                "hit_cnt"  => $hit_cnt,
                                                                                "time_sum" => $time_sum,
                                                                                "time_min" => $time_min,
                                                                                "time_max" => $time_max,
                                                                                );
        }

        uasort (www.php.net/uasort)($results, 'dbg_profile_cmp');

        foreach ($results as $ctx => $data)
        {
                uasort (www.php.net/uasort)($results[$ctx]['lines'], 'dbg_profile_cmp');
        }

        return $results;
}


function dbg_profile_cmp($x,$y)
{
        if ($x["time_sum"] == $y["time_sum"]) return 0;
        return ($x["time_sum"] > $y["time_sum"]) ? -1 : 1;
}


function dbg_draw_contexts($contexts, $lines_detail = 15, $min_line_detail = 0.01)
{

        $total_time = 0;
        $total_files = 0;

        $files = array (www.php.net/array)();

        foreach ($contexts as $context => $data)
        {
                $total_time += $data['time_sum'];
                if (!@$files[$data['file']])
                {
                        $total_files ++;
                        $files[$data['file']] = basename (www.php.net/basename)($data['file']);
                }
        }

        echo (www.php.net/echo) "
                <div align='left'>
                <table cellspacing='1' cellpadding='2' border='0' style='font: 9px courier;' width='100%'>
                        <tr>
                                <td colspan='7' style='background: #808080; color: #FFFFFF;' align='center'> : "
.$total_files."</td>
                        </tr>
                        <tr>
                                <td colspan='7' style='background: #808080; color: #FFFFFF;' align='center'> : "
.implode(", ",$files)."</td>
                        </tr>
                        <tr>
                                <td colspan='7' style='background: #808080; color: #FFFFFF;' align='center'> : "
.round($total_time / 1000,3)." sec.</td>
                        </tr>
                        <tr>
                                <td style='background: #808080; color: #FFFFFF;' align='center'> file </td>
                                <td style='background: #808080; color: #FFFFFF;' align='center'> function </td>
                                <td style='background: #808080; color: #FFFFFF;' align='center'> hit_cnt </td>
                                <td style='background: #808080; color: #FFFFFF;' align='center'> time </td>
                                <td style='background: #808080; color: #FFFFFF;' align='center'> min </td>
                                <td style='background: #808080; color: #FFFFFF;' align='center'> max </td>
                                <td style='background: #808080; color: #FFFFFF;' align='center'> % time </td>
                        </tr>"
;

        $idx = 0;
        foreach ($contexts as $context => $data)
        {
                $bk = ($idx++ & 1) ? "#F0F0F0" : "#D0D0D0";

                $file = basename (www.php.net/basename)($data['file']);

                $p_time = round (www.php.net/round)(100 * $data['time_sum'] / $total_time,3);

                echo (www.php.net/echo) "
                        <tr>
                                <td style='background: $bk' align='left'>$file</td>
                                <td style='background: $bk' align='left'>$context</td>
                                <td style='background: $bk' align='center'>--</td>
                                <td style='background: $bk' align='right'>"
.round($data['time_sum'],4)."</td>
                                <td style='background: $bk' align='right'>--</td>
                                <td style='background: $bk' align='right'>--</td>
                                <td style='background: $bk' align='right'>$p_time</td>
                        </tr>"
;

                if ($idx-1 < $lines_detail)
                {
                        $i = 0;

                        foreach ($data['lines'] as $l => $d)
                        {
                                $p_time = round (www.php.net/round)(100 * $d['time_sum'] / $total_time,3);

                                if ($i++ > 20 || $d['time_sum'] < $min_line_detail) break;

                                echo (www.php.net/echo) "
                                        <tr>
                                                <td style='background: $bk'>...</td>
                                                <td style='background: $bk' align='left'>&nbsp; &nbsp; line $l</td>
                                                <td style='background: $bk' align='center'>$d[hit_cnt]</td>
                                                <td style='background: $bk' align='right'>"
.round($d['time_sum'],4)."</td>
                                                <td style='background: $bk' align='right'>"
.round($d['time_min'],4)."</td>
                                                <td style='background: $bk' align='right'>"
.round($d['time_max'],4)."</td>
                                                <td style='background: $bk' align='right'>$p_time</td>
                                        </tr>"
;
                        }
                }
        }

        echo (www.php.net/echo) "</table></div>";
}

dbg_draw_contexts(dbg_profile());

?>
Подключите этот модуль инклюдом в конец своего кода.

Пример использования:
Code (php): скопировать код в буфер обмена
<?php

function A() {
        for($i=0; $i<10000; $i++) ;
}

function B() {
        for($i=0; $i<5000; $i++) ;
}

A();
B();

include "profiler.php";

?>



profiler.zip
 Description:
Профайлер

Download
 Filename:  profiler.zip
 Filesize:  2.48 KB
 Downloaded:  885 Time(s)

Back to top
View user's profile Send private message
van4ous
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue May 24, 2005 6:33 pm (спустя 23 часа 6 минут; написано за 24 секунды)
   Post subject:
Reply with quote

Та же самая фигня... Пустая таблица...
Back to top
urisoft
Заглянувший



Joined: 20 May 2005
Posts: 12
Карма: 2
   поощрить/наказать


PostPosted: Tue May 24, 2005 7:56 pm (спустя 1 час 22 минуты; написано за 1 минуту 24 секунды)
   Post subject:
Reply with quote

van4ous wrote:
Та же самая фигня... Пустая таблица...
DBGListener запущен ?
DBGSESSION=.... указывали ?
Back to top
View user's profile Send private message
Ksnk
Участник форума



Joined: 24 Jun 2005
Posts: 459
Карма: 49
   поощрить/наказать

Location: СПб

PostPosted: Tue Jul 05, 2005 6:10 pm (спустя 1 месяц 11 дней 22 часа 14 минут; написано за 2 минуты 53 секунды)
   Post subject:
Reply with quote

urisoft wrote:
van4ous wrote:
Та же самая фигня... Пустая таблица...
DBGListener запущен ?
DBGSESSION=.... указывали ?
Так !!! А вот про это - можно поподробнее. Как можно догадаться, поиск по этим словам a форуме ничего не дал!

Аx! Да! у меня - та-же фигня :) - пустая таблица...
Back to top
View user's profile Send private message Send e-mail
Dmitry Simerzin
Участник форума



Joined: 18 Aug 2003
Posts: 66
Карма: 5
   поощрить/наказать

Location: Israel

PostPosted: Sun Jul 30, 2006 2:03 pm (спустя 1 год 24 дня 19 часов 52 минуты; написано за 5 минут 49 секунд)
   Post subject:
Reply with quote

Вот еще один вариант, частично основанный на коде urisoft (forum.dklab.ru/viewtopic.php?p=84345#84345)

Основные файлы (trac.torrentpier.com/trac/browser/torrentpier/trunk/forum/develop/profiler)
Пример подключения (trac.torrentpier.com/trac/browser/torrentpier/trunk/forum/includes/page_tail_dev.php?rev=185#L108)
Code (php): скопировать код в буфер обмена
require('profiler/profiler.php');
$profiler = profiler::init('dbg');
$min_time = !empty (www.php.net/empty)($_COOKIE['prof_min_time']) ? $_COOKIE['prof_min_time'] : '0.1%';
$profiler->print_profile_data($min_time);
$min_time - в секундах или процентах ("0.01" - секунды, "0.01%" - проценты)

Пример, как это может выглядеть (torrents.ru/misc/profiler.htm) (фильтр по 0.1%)


profiler.rar
 Description:

Download
 Filename:  profiler.rar
 Filesize:  3.73 KB
 Downloaded:  714 Time(s)

Back to top
View user's profile Send private message
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 184
   поощрить/наказать

Location: Москва

PostPosted: Mon Aug 07, 2006 1:58 pm (спустя 7 дней 23 часа 55 минут; написано за 5 минут 14 секунд)
   Post subject:
Reply with quote

Дмитрий Эсс wrote:
Хух, снизил скорость загрузки страницы до 0.5 сек., заменив поиск по регам на поиск с LIKE. Не думал, что реги так тормозят.
Люди, не пользуйтесь регами в SQL запросах.
Иногда без регулярных выражений не обойтись.
Скорость можно увеличить, используя оптимизацию в виде связки (LIKE AND REGEXP).
На первом месте в условии д.б. обязательно LIKE, который используется для неточного поиска и оптимизации, потом REGEXP для точного поиска. Этот прием я использовал для нахождения целых слов и чисел в тексте. Все работает очень быстро.
Back to top
View user's profile Send private message Send e-mail
F[D]
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Mar 09, 2007 9:42 am (спустя 7 месяцев 1 день 19 часов 43 минуты; написано за 1 минуту)
   Post subject:
Reply with quote

А у кого-нибудь есть рабочая библиотека но для *nix платформ, если быть точным то для FreeBSD 6.2 ??
Back to top
phoenix
Участник форума



Joined: 06 Feb 2007
Posts: 53
Карма: 0
   поощрить/наказать


PostPosted: Mon Jun 18, 2007 12:47 am (спустя 3 месяца 8 дней 15 часов 4 минуты; написано за 2 минуты 15 секунд)
   Post subject:
Reply with quote

urisoft wrote:
DBGListener запущен ?
DBGSESSION=.... указывали ?
Так чего ж с этим-то? Что все-таки это такое и что с этим делать?
Back to top
View user's profile Send private message
SisAdmiZena
Заглянувший



Joined: 28 May 2008
Posts: 7
Карма: -1
   поощрить/наказать

Location: UA

PostPosted: Fri Jan 09, 2009 2:39 pm (спустя 1 год 6 месяцев 21 день 13 часов 52 минуты; написано за 8 минут 6 секунд)
   Post subject:
Reply with quote

Зря тему забросили
Уже 2009 год...а вопрос с пустой таблицей так и не решен (((
Скрипт очень нужен.
У меня тоже пустая таблица.

Софт.
Денвер-3
По ссылке www.php-debugger.com/dbg/downloads.php были скачены последние версии
DBG 2.15.5
binaries for Win32 platform
DBG 2.15.5 dbglistner [152Kb] - May 1, 2007 zip'd archieve includes dbg listener for the client part.
DBG 2.15.5 dbg modules [118Kb] - May 1, 2007 zip'd archieve contains pre-compiled dbg modules for php 4.3 up to 5.2.
-------------------------------------
Скрипт профайла был взят из первого поста.
-------------------------------------
Listener был зарегистрирован (register.bat) а потом запущен (DbgListener.exe)
----------------------------
В логах листенера пусто.
Профайлер тоже пустой.

DBG 2.15.5 dbg - как и полагается был подключен в php.ini
(кстати, в архиве несколько версий, работает только последняя - dbg-2.15.5-win32\x86\php_dbg.dll-5.2.x)
А то что выкладывал Дмитрий - четверка - опускает апач.
-----------------------------
Причем если запустить сначала денвер а потом листенер - (у листенера выставит 80 порт) - то листенер не запуститься.
Если запустить наоборот, но не будет работать денвер - сайты не открываются.
Вот скрин.
(www.radikal.ru)
Порт 80
Запущен листенер а потом денвер.
Видно когда открываю сайт, но дальше дело не движется.
------------------------------
Начал я смотреть на форуме и увидел вот что

Так вот, в списке IDE COM Class у меня пусто, в то время как смотри выше, у людей что-то выбрано.

Что касается сессии.
Я написал так
www.test21.ru/ru/?DBGSESSID=2@dk
Мне выдало следующее:
Failed to start debug session

reason:
client host address [dk] lookup failed


Поставил такое значение - поменял на локалхост
www.test21.ru/ru/?DBGSESSID=2@localhost
Вообще пустая страница.

порт выставлен стандартно у листенера. =7869
Как в списке выбрать класс?

****

Поставил PHP Coder (а что делать)
Теперь в списке появился Class
Выбрал
Запустил листенер, запустил сайт (чтоб не писать в адресной строке сесси, в php.ini прописал вот это
[Debugger]
debugger.enabled = true
debugger.JIT_host = 127.0.0.1
debugger.JIT_port = 7869
debugger.enable_session_cookie = false
debugger.profiler_enabled = true

После запуска сайта выдало вот это (в листенере)
09.01.2009 19:18:18 Failed to open or create an instance of IDE CoClass {A8A29223-F193-11D4-A58B-000022FEA644}. OSERR (0x80004002) 'Интерфейс не '.
09.01.2009 19:18:18 127.0.0.1 client disconnected


Куда копать?
_________________

Last edited by SisAdmiZena on Fri Jan 09, 2009 8:23 pm; edited 1 time in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page Previous  1, 2
Page 2 of 2    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML