<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Отладка | Блог веб-разработчика</title>
	<atom:link href="https://tigor.com.ua/blog/category/development/debug/feed/" rel="self" type="application/rss+xml" />
	<link>https://tigor.com.ua/blog</link>
	<description>О разработке веб-приложений на Symfony</description>
	<lastBuildDate>Tue, 29 May 2012 05:31:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
	<item>
		<title>XHprof &#8211; профайлер PHP от Facebook</title>
		<link>https://tigor.com.ua/blog/2009/12/13/profiling-php-with-xhprof/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=profiling-php-with-xhprof</link>
					<comments>https://tigor.com.ua/blog/2009/12/13/profiling-php-with-xhprof/#comments</comments>
		
		<dc:creator><![CDATA[ingvar]]></dc:creator>
		<pubDate>Sun, 13 Dec 2009 15:32:05 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Отладка]]></category>
		<category><![CDATA[highload]]></category>
		<category><![CDATA[xhprof]]></category>
		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=1325</guid>

					<description><![CDATA[<p>Профилирование кода позволяет выявить медленные участки в коде, что позволит в случае необходимости устранить их. Новый PHP профайлер XHprof от компании Facebook &#8211; это альтернатива Xdebug (PHP профайлер Xdebug). XHprof был разработан специально для Facebook и начиная с март 2009 года его исходный код стал доступен для скачивания. Как работает XHprof? XHProf работает по принципу [&#8230;]</p>
<p>The post <a href="https://tigor.com.ua/blog/2009/12/13/profiling-php-with-xhprof/">XHprof – профайлер PHP от Facebook</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Профилирование кода позволяет выявить медленные участки в коде, что позволит в случае необходимости устранить их.</p>
<p>Новый PHP профайлер XHprof от компании Facebook &#8211; это альтернатива Xdebug (<a href="http://tigor.com.ua/blog/2008/07/21/php-profiler-debugger-xdebug/">PHP профайлер Xdebug</a>). XHprof был разработан специально для Facebook и начиная с март 2009 года его исходный код стал доступен для скачивания.</p>
<p><span id="more-1325"></span></p>
<h3><strong>Как работает XHprof?</strong></h3>
<p>XHProf работает по принципу декомпозиции системы на вызовы функций (методов) и построения статистики в разрезе их ресурсопотребления. В результате получаем информацию: количество выделяемой памяти, количество вызовов функций, время исполнения и т.д.</p>
<h3><strong>Установка XHProf</strong></h3>
<p>С марта 2009 года XHprof доступен как пакет <a href="http://pecl.php.net/package/xhprof">PECL</a>, поэтому его установка не составит особого труда. Для Windows пакет не доступен.</p>
<pre class="brush: bash; title: ; notranslate">
# pecl search xhprof
Retrieving data...0%
Matched packages, channel pecl.php.net:
=======================================
Package Stable/(Latest) Local
xhprof  0.9.2 (beta)          XHProf: A Hierarchical Profiler for PHP
</pre>
<p>Т.к. пакет xhprof находится в стадии beta, то нужно разрешить его установку:</p>
<pre class="brush: bash; title: ; notranslate">
# pecl config-get preferred_state
stable

# pecl config-set preferred_state beta
# pecl config-get preferred_state
beta
</pre>
<p>Если попытаться установить пакет через PECL, то получим ошибку:</p>
<pre class="brush: bash; title: ; notranslate">
# pecl install xhprof

downloading xhprof-0.9.2.tar ...
Starting to download xhprof-0.9.2.tar (Unknown size)
....................................................................done: 1,506,816 bytes
11 source files, building
running: phpize
Cannot find config.m4.
Make sure that you run '/usr/local/bin/phpize' in the top level source directory of the module

ERROR: `phpize' failed
</pre>
<p>Поэтому выполняем следующие шаги:</p>
<pre class="brush: bash; title: ; notranslate">
# wget http://pecl.php.net/get/xhprof-0.9.2.tgz
# tar xvf xhprof-0.9.2.tgz
# cd ./xhprof-0.9.2/extension/
# phpize
# ./configure --with-php-config=/usr/local/bin/php-config
# make

# make install
Installing shared extensions:     /usr/local/lib/php/20060613/

# make test
</pre>
<p>Удалять папку xhprof-0.9.2 не следует, т.к. там содержатся утилиты GUI для визуального представления информации профайлера.</p>
<p>Подключаем модуль xhprof к PHP &#8211; редактируем файл php.ini (добавляем в конец файла):</p>
<pre class="brush: plain; title: ; notranslate">
&#x5B;xhprof]
extension=xhprof.so
xhprof.output_dir=&quot;/var/tmp/xhprof&quot;
</pre>
<p>Для папки <strong>&#8220;/var/tmp/xhprof&#8221;</strong> должен быть доступ на запись, т.к. туда будут сохраняться результаты профайлинга.</p>
<p>Перезагрузите Apache. При вызове phpinfo() появится информация, что подключен модуль xhprof &#8211; значит все работает. </p>
<h3><strong>Настройка XHProf UI (GUI)</strong></h3>
<p>В пакет XHprof входит очень удобный интерфейс для анализа отчетов профилирования. XHprof позволяет строить отчеты, как в текстовом так и графическом ввиде.</p>
<p>В установочной папке xhprof-0.9.2 Вы найдете папку xhprof_html и xhprof_lib, которые нам понадобятся:<br />
&bull; xhprof_html &#8211; доступ к GUI<br />
&bull; xhprof_lib &#8211; библиотека для отображения и анализа кода (computing flat profile info, computing diffs, aggregating data from multiple runs, etc.). </p>
<p>Папку xhprof_lib размещаем в <strong>/usr/local/share/php/</strong> или <strong>/usr/local/lib/php/</strong> в зависимости от ОС. Таким образом будет доступ к библиотеки будет глобальный. В нашем случае получится: <strong>/usr/local/share/php/xhprof_lib/</strong>. Или как вариант папку xhprof_lib можно положить в наш проект.</p>
<p>В зависимости от того как Вы настроете доступ к GUI xhprof, нужно положить xhprof_html в соответствующее место. К примеру, можно создать субдомен http://xhprof.project/ или положить в корень проекта http://xhprof/.</p>
<h3><strong>Небольшой пример использования</strong></h3>
<p>В качестве примера взят пример с сайта highload.com.ua:</p>
<pre class="brush: php; title: ; notranslate">
function user_array_intersect( $a, $b ) {
  $res = array();

  foreach ( $a as $k =&gt; $v )
  {
    if ( in_array($v, $b) )
    {
      $res&#x5B;] = $v;
    }
  }

  return $res;
}

function execute()
{
  $a = range(rand(100, 300), rand(700, 900));
  $b = range(rand(100, 300), rand(700, 900));

  $r1 = user_array_intersect($a, $b);
  $r2 = array_intersect($a, $b);
}

# Инициализируем профайлер - будем считать и процессорное время и потребление памяти
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

# Выполняем &quot;программу&quot;
execute();

# Останавливаем профайлер
$xhprof_data = xhprof_disable();

# Сохраняем отчет и генерируем ссылку для его просмотра
include_once &quot;xhprof_lib/utils/xhprof_lib.php&quot;;
include_once &quot;xhprof_lib/utils/xhprof_runs.php&quot;;
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs-&gt;save_run($xhprof_data, &quot;xhprof_test&quot;);
echo &quot;Report: http://xhprof/index.php?run=$run_id&amp;source=xhprof_test&quot;; # Хост, который Вы настроили ранее на GUI профайлера
echo &quot;\n&quot;;
</pre>
<p>В этом скрипте мы сравним отличие в эффективности работы встроенной функции array_intersect и ее самописного клона user_array_intersect. После описания функций мы подключили профайлер для генерации и сохранения отчета. Посмотрим на отчет:</p>
<p><img fetchpriority="high" decoding="async" src="http://tigor.com.ua/blog/wp-content/uploads/2009/12/screenshot-xhprof-hierarchical-profiler-report-mozilla-firefox.png" alt="screenshot-xhprof-hierarchical-profiler-report-mozilla-firefox" title="screenshot-xhprof-hierarchical-profiler-report-mozilla-firefox" width="550" height="218" class="alignnone size-full wp-image-1344" srcset="https://tigor.com.ua/blog/wp-content/uploads/2009/12/screenshot-xhprof-hierarchical-profiler-report-mozilla-firefox.png 550w, https://tigor.com.ua/blog/wp-content/uploads/2009/12/screenshot-xhprof-hierarchical-profiler-report-mozilla-firefox-300x118.png 300w" sizes="(max-width: 550px) 100vw, 550px" /></p>
<p>Из отчета видно, что эффективность собственной реализации функции array_intersect в два раза меньше встроенной (еще одно напоминание об использовании стандартных средств прежде всего!). Небольшая справка по терминологии отчетов:</p>
<p>&bull; <strong>Incl[usive] Time</strong> &#8211; время, потраченное на функцию и на все функции, вызванные из нее<br />
&bull; <strong>Excl[usive] Time</strong> &#8211; время, потраченное на функцию без учета времени на вложенные функции</p>
<p>На скриншоте показана только часть отчета, кроме этих показателей отчет также содержит статистику по процессорным затратам и использованной памяти.</p>
<h3><strong>Графические отчеты</strong></h3>
<p>XHprof позволяет строить графические отчеты. Для построения он использует внешний инструмент Graphviz, поэтому убедитесь, что он установлен. Графический отчет вышеуказанного скрипта выглядит так:</p>
<p><img decoding="async" src="http://tigor.com.ua/blog/wp-content/uploads/2009/12/callgraphphp.png" alt="callgraphphp" title="callgraphphp" width="500" height="432" class="alignnone size-full wp-image-1346" srcset="https://tigor.com.ua/blog/wp-content/uploads/2009/12/callgraphphp.png 500w, https://tigor.com.ua/blog/wp-content/uploads/2009/12/callgraphphp-300x259.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<p>Графический отчет позволяет визуально оценить ресурсоемкость каждой функции (красный должен привлечь внимание!). Как видим, в  примере самой затратной функцией для ресурсов стала in_array(), которая сама по себе не является проблемой но говорит о плохом техническом решении.</p>
<h3><strong>Профилирование production проектов</strong></h3>
<p>XHprof позволяет профилировать не только отдельные участки кода но и production проекты. Т.к. профилирование проектов в среде production процесс ресурсоемкий, то главный тут критерий &#8211; производительность. И XHprof тут прекрасно справляется, т.к. создан он был именно для таких целей. Во-первых XHprof написан на C, во-вторых имеет ряд настроек:</p>
<p>&bull; Таймер CPU на Linux системах имеет большой оверхед, поэтому разработчики рекомендуют использовать профайлер в режиме &#8220;elapsed time + memory&#8221;:</p>
<pre class="brush: php; title: ; notranslate">
  // elapsed time profiling (default) + memory profiling
  xhprof_enable(XHPROF_FLAGS_MEMORY);
</pre>
<p>&bull; Сбор данных профайлера будет весьма точно отражать реальную картину, если его запускать не каждый раз, а случайно и равнораспределенно, например для запуска каждый сотый раз:</p>
<pre class="brush: php; title: ; notranslate">
   if (mt_rand(1, 100) == 1) {
     xhprof_enable(XHPROF_FLAGS_MEMORY);
     $xhprof_on = true;
   }
  ...
   if ($xhprof_on) {
     $xhprof_data = xhprof_disable();
   }
</pre>
<p>&bull; Режим Lightweight Sampling &#8211; в этом режиме профилирование выполняется в течении короткого промежутка во времени (сэмплами) &#8211; 0.1 секунды</p>
<h3><strong>Пример профилирования production проекта</strong></h3>
<p>В качестве примера используем проект на Yii &#8211; Hello World!</p>
<p>Наш проект http://project/.<br />
GUI нашего профайлера (содержимое папки xhprof_html) http://xhprof/.<br />
xhprof_lib находится в &#8220;/usr/local/share/php/xhprof_lib&#8221;.</p>
<p>Создаем 2 файла (header.php и footer.php).</p>
<p><strong>header.php</strong></p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

if (extension_loaded('xhprof')) {
  // Способ 1 - файлы лежат в проекте
  // include_once '/usr/local/share/php/xhprof_lib/utils/xhprof_lib.php';
  // include_once '/usr/local/share/php/xhprof_lib/utils/xhprof_runs.php';

  // Способ 2 - файлы лежат в /usr/local/share/php/xhprof_lib
  include_once dirname(__FILE__) . '/xhprof_lib/utils/xhprof_lib.php';
  include_once dirname(__FILE__) . '/xhprof_lib/utils/xhprof_runs.php';
  xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
}
</pre>
<p><strong>footer.php</strong></p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

if (extension_loaded('xhprof')) {
  $profiler_namespace = 'myapp';  // namespace for your application
  $xhprof_data = xhprof_disable();
  $xhprof_runs = new XHProfRuns_Default();
  $run_id = $xhprof_runs-&gt;save_run($xhprof_data, $profiler_namespace);
 
  // url to the XHProf UI libraries (change the host name and path)
  $profiler_url = sprintf('http://' . $_SERVER&#x5B;'SERVER_NAME'] . '/xhprof/index.php?run=%s&amp;source=%s', $run_id, $profiler_namespace);

  // Можем сделать защиту по айпи, или добавить $_GET параметр
  if (in_array($_SERVER&#x5B;'REMOTE_ADDR'], array('127.0.0.1', '::1')))
  {
    // На нашей странице появится ссылка &quot;Profiler output&quot;, которая ведет на GUI XHprof с уникальными идентификатором отчета
    echo '&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;'. $profiler_url .'&quot; target=&quot;_blank&quot;&gt;Profiler output&lt;/a&gt;';
  }
}
</pre>
<p>Для внедрения профайлера в наш проект есть 2 способа:</p>
<p>1) Создаем файл .htaccess</p>
<pre class="brush: plain; title: ; notranslate">
php_value auto_prepend_file ../xhprof/header.php
php_value auto_append_file ../xhprof/footer.php
</pre>
<p>2) Добавляем вызов в файла в наш index.php</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

include('xhprof/header.php');

// include Yii bootstrap file
require_once(dirname(__FILE__).'/framework/yii.php');

// create a Web application instance and run
Yii::createWebApplication()-&gt;run();

include('xhprof/footer.php');
</pre>
<p>Загружаем страницу сайта. Внизу страницы появляется ссылка &#8220;Profiler output&#8221;, которая ведет на GUI XHprof с уникальными идентификатором отчета. Каждый раз, когда мы обновляем страницу отчет перегенирируется и идентификатор изменится.</p>
<p>Получаем отчет:</p>
<p><img decoding="async" src="http://tigor.com.ua/blog/wp-content/uploads/2009/12/XHProf-Hierarchical-Profiler-Report_12607101.jpg" alt="XHProf- Hierarchical Profiler Report_12607101" title="XHProf- Hierarchical Profiler Report_12607101" width="700" height="320" class="alignnone size-full wp-image-1354" srcset="https://tigor.com.ua/blog/wp-content/uploads/2009/12/XHProf-Hierarchical-Profiler-Report_12607101.jpg 700w, https://tigor.com.ua/blog/wp-content/uploads/2009/12/XHProf-Hierarchical-Profiler-Report_12607101-300x137.jpg 300w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p><strong>Показатели:</strong><br />
&bull; Total Incl. Wall Time (microsec):	18,710 microsecs (время затраченное на выполнение функций с учетом ожидания ответов от сокетов, файловой системы и других ресурсов  )<br />
&bull; Total Incl. CPU (microsecs):	16,309 microsecs (время затраченное на выполнение функций)<br />
&bull; Total Incl. MemUse (bytes):	527,604 bytes (использование памяти)<br />
&bull; Total Incl. PeakMemUse (bytes):	529,428 bytes (пиковое использование памяти)<br />
&bull; Number of Function Calls:	179 (количество вызовов функций)</p>
<p><strong>Что почитать:</strong><br />
&bull; <a href="http://mirror.facebook.net/facebook/xhprof/doc.html">XHProf Documentation</a><br />
&bull; <a href="http://pecl.php.net/package/xhprof">Pecl: xhprof</a><br />
&bull; <a href="http://techportal.ibuildings.com/2009/12/01/profiling-with-xhprof/">Profiling with XHProf</a><br />
&bull; <a href="http://highload.com.ua/index.php/2009/08/21/xhprof-%D0%BF%D1%80%D0%BE%D1%84%D0%B8%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-php-%D0%BE%D1%82-facebook/">XHprof &#8211; профилирование PHP от Facebook</a><br />
&bull; <a href="http://www.antonoff.info/php/code-profiling">Профилирование PHP-кода</a></p><p>The post <a href="https://tigor.com.ua/blog/2009/12/13/profiling-php-with-xhprof/">XHprof – профайлер PHP от Facebook</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://tigor.com.ua/blog/2009/12/13/profiling-php-with-xhprof/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Zend Framework Debug Toolbar</title>
		<link>https://tigor.com.ua/blog/2009/04/01/zend-framework-debug-toolbar/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=zend-framework-debug-toolbar</link>
					<comments>https://tigor.com.ua/blog/2009/04/01/zend-framework-debug-toolbar/#comments</comments>
		
		<dc:creator><![CDATA[ingvar]]></dc:creator>
		<pubDate>Wed, 01 Apr 2009 08:09:06 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Отладка]]></category>
		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=1098</guid>

					<description><![CDATA[<p>Отладочная панель для Zend Framework, скачать Scienta ZF Debug Bar, ознакомиться. Аналогичные панели для других php framework: &#8226; New in symfony 1.2: Customize the Web Debug Toolbar &#8226; CodeIgniter Debug Toolbar &#8226; Kohana Debug Toolbar &#8226; PHP_Debug Toolbar &#8211; прародитель всех панелей</p>
<p>The post <a href="https://tigor.com.ua/blog/2009/04/01/zend-framework-debug-toolbar/">Zend Framework Debug Toolbar</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></description>
										<content:encoded><![CDATA[<p> <img loading="lazy" decoding="async" src="http://tigor.com.ua/blog/wp-content/uploads/2009/04/2009-scienta_debugbar.png" alt="2009-scienta_debugbar" title="2009-scienta_debugbar" width="569" height="21" class="aligncenter size-full wp-image-1099" srcset="https://tigor.com.ua/blog/wp-content/uploads/2009/04/2009-scienta_debugbar.png 569w, https://tigor.com.ua/blog/wp-content/uploads/2009/04/2009-scienta_debugbar-300x11.png 300w" sizes="auto, (max-width: 569px) 100vw, 569px" /></p>
<p>Отладочная панель для Zend Framework, скачать <a href="http://jokke.dk/software/scientadebugbar">Scienta ZF Debug Bar</a>,<br />
<a href="http://jokke.dk/blog/2009/01/introducing_the_scienta_zf_debug_bar">ознакомиться</a>.</p>
<p>Аналогичные панели для других php framework:<br />
&bull; <a href="http://www.symfony-project.org/blog/2008/08/27/new-in-symfony-1-2-customize-the-web-debug-toolbar">New in symfony 1.2: Customize the Web Debug Toolbar</a><br />
&bull; <a href="http://habrahabr.ru/blogs/codeigniter/55477/">CodeIgniter Debug Toolbar</a><br />
&bull; <a href="http://projects.kohanaphp.com/projects/show/kohana-debug-toolbar">Kohana Debug Toolbar</a><br />
&bull; <a href="http://www.php-debug.com/www/">PHP_Debug Toolbar</a> &#8211; прародитель всех панелей</p><p>The post <a href="https://tigor.com.ua/blog/2009/04/01/zend-framework-debug-toolbar/">Zend Framework Debug Toolbar</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://tigor.com.ua/blog/2009/04/01/zend-framework-debug-toolbar/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Symfony: отлавливаем фатальные ошибки</title>
		<link>https://tigor.com.ua/blog/2008/12/19/symfony-catch-fatal-error/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=symfony-catch-fatal-error</link>
					<comments>https://tigor.com.ua/blog/2008/12/19/symfony-catch-fatal-error/#comments</comments>
		
		<dc:creator><![CDATA[ingvar]]></dc:creator>
		<pubDate>Fri, 19 Dec 2008 08:57:56 +0000</pubDate>
				<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Отладка]]></category>
		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=721</guid>

					<description><![CDATA[<p>При разработке приложения на Symfony бывают ситуации, когда на странице получаем &#8220;белый экран&#8221; без описания ошибок, и в логах тоже пусто. Это так называемые &#8220;фатальные ошибки&#8221;, которые можно отловить, но для этого надо задействовать перехватчик ошибок. Без плагинов можно сделать следующее. Способ №1: используем перехватчик ошибок Листинг 1: Добавляем в файлы index.php и frontend_dev.php error_reporting(E_ALL); ini_set(&#039;log_errors&#039;, &#039;On&#039;); [&#8230;]</p>
<p>The post <a href="https://tigor.com.ua/blog/2008/12/19/symfony-catch-fatal-error/">Symfony: отлавливаем фатальные ошибки</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>При разработке приложения на Symfony бывают ситуации, когда на странице получаем &#8220;белый экран&#8221; без описания ошибок, и в логах тоже пусто. Это так называемые &#8220;фатальные ошибки&#8221;, которые можно отловить, но для этого надо задействовать перехватчик ошибок.</p>
<p>Без плагинов можно сделать следующее.</p>
<p><strong>Способ №1:</strong> используем перехватчик ошибок<br />
<strong>Листинг 1:</strong> Добавляем в файлы <strong>index.php </strong>и <strong>frontend_dev.php</strong></p>
<pre class="brush: php; title: ; notranslate">
error_reporting(E_ALL);
ini_set(&#039;log_errors&#039;, &#039;On&#039;);
ini_set(&#039;display_errors&#039;, &#039;Off&#039;);
ini_set(&#039;error_log&#039;, &#039;../logs/fatal_server.log&#039;);
</pre>
<p><strong>Способ №2:</strong> воспользоваться плагинами Symfony<br />
• <a href="http://www.symfony-project.org/plugins/sfErrorHandlerPlugin">sfErrorHandlerPlugin</a></p><p>The post <a href="https://tigor.com.ua/blog/2008/12/19/symfony-catch-fatal-error/">Symfony: отлавливаем фатальные ошибки</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://tigor.com.ua/blog/2008/12/19/symfony-catch-fatal-error/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>HTTP отладка трафика и запросов в Internet Explorer (IE)</title>
		<link>https://tigor.com.ua/blog/2008/07/25/http-view-debugger-sniffer-interner-explorer/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=http-view-debugger-sniffer-interner-explorer</link>
					<comments>https://tigor.com.ua/blog/2008/07/25/http-view-debugger-sniffer-interner-explorer/#comments</comments>
		
		<dc:creator><![CDATA[Igor]]></dc:creator>
		<pubDate>Fri, 25 Jul 2008 21:48:17 +0000</pubDate>
				<category><![CDATA[Отладка]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[sniffers]]></category>
		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=173</guid>

					<description><![CDATA[<p>Приложения для тестирования, отладки, анализа HTTP трафика и запросов в Internet Explorer. По другому их ещё называют HTTP Sniffers. Они позволяют просматривать HTTP headers, все запросы, Cookies, статистику, время выполнения запросов 1. HttpWatch 5.3 Платное решение Поддержка: IE6, IE7 Возможности Описание: лучший отладчик в своем роде 2. HTTP Analyzer 3.3.1 (IE Inspector) Платное решение Возможности: [&#8230;]</p>
<p>The post <a href="https://tigor.com.ua/blog/2008/07/25/http-view-debugger-sniffer-interner-explorer/">HTTP отладка трафика и запросов в Internet Explorer (IE)</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Приложения для тестирования, отладки, анализа HTTP трафика и запросов в Internet Explorer. По другому их ещё называют HTTP Sniffers. Они позволяют просматривать HTTP headers, все запросы, Cookies, статистику, время выполнения запросов</p>
<p><strong>1. <a href="http://httpwatch.com/">HttpWatch 5.3</a></strong><br />
Платное решение<br />
Поддержка: IE6, IE7<br />
<a href="http://httpwatch.com/features.htm">Возможности</a><br />
Описание: лучший отладчик в своем роде</p>
<p><strong>2. <a href="http://www.ieinspector.com/httpanalyzer/index.html">HTTP Analyzer 3.3.1 (IE Inspector)</a></strong><br />
Платное решение<br />
Возможности: Monitor HTTP, Trace HTTP, Debug HTTP, Capture HTTP, Track HTTP and Analyze HTTP/HTTPS!<br />
Впечатление: тоже очень хороший отладчик</p>
<p><strong>3. <a href="http://www.blunck.info/iehttpheaders/iehttpheaders.html">ieHTTPHeaders</a></strong><br />
Бесплатное решение<br />
Версия: 2.0 (2007-11-11)</p>
<p><strong>4. <a href="http://www.iewatch.com/">IEWatch 4.6</a></strong><br />
Платное решение</p>
<p><strong>5. <a href="http://www.fiddler2.com/fiddler2/">fiddler2</a></strong><br />
Бесплатное решение<br />
Версия: 2.1.6.2 (2008-03-05)</p><p>The post <a href="https://tigor.com.ua/blog/2008/07/25/http-view-debugger-sniffer-interner-explorer/">HTTP отладка трафика и запросов в Internet Explorer (IE)</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://tigor.com.ua/blog/2008/07/25/http-view-debugger-sniffer-interner-explorer/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Инструменты отладки Javascript скриптов в Internet Explorer (IE)</title>
		<link>https://tigor.com.ua/blog/2008/07/25/ie-javascript-debugger-extensions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ie-javascript-debugger-extensions</link>
					<comments>https://tigor.com.ua/blog/2008/07/25/ie-javascript-debugger-extensions/#respond</comments>
		
		<dc:creator><![CDATA[Igor]]></dc:creator>
		<pubDate>Fri, 25 Jul 2008 21:34:31 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Отладка]]></category>
		<category><![CDATA[ie]]></category>
		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=150</guid>

					<description><![CDATA[<p>Отладка скрипта в IE без использования дополнительных утилит невозможна. Т.е. в базовой поставке Interner Explorer тестировать сценарии не получиться. Ниже приводятся решения в виде расширений (extension ) для IE, так и в виде обычных Javascript файлов. 1. DebugBar Тип: расширение, платное (59 € ) Версия: 5.1 (2008-07-22) Поддержка: IE6, IE7 Возможности: DOM inspector, Javascript debugger, [&#8230;]</p>
<p>The post <a href="https://tigor.com.ua/blog/2008/07/25/ie-javascript-debugger-extensions/">Инструменты отладки Javascript скриптов в Internet Explorer (IE)</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Отладка скрипта в IE без использования дополнительных утилит невозможна. Т.е. в базовой поставке Interner Explorer тестировать сценарии не получиться. Ниже приводятся решения в виде расширений  (extension ) для IE, так и в виде обычных Javascript файлов.</p>
<p><span id="more-150"></span></p>
<p><strong>1.</strong> <a href="http://www.debugbar.com/"><strong>DebugBar</strong></a><br />
Тип: расширение, платное (59 € )<br />
Версия: 5.1 (2008-07-22)<br />
Поддержка: IE6, IE7<br />
Возможности: DOM inspector, Javascript debugger, HTTP headers viewer, Cookies viewer<br />
Впечатления: очень хороший инструмент, по возможностям аналогичен FireBug.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="size-medium wp-image-155 aligncenter" title="devbar" src="http://tigor.com.ua/blog/wp-content/uploads/2008/07/devbar-226x300.png" alt="" width="226" height="300" srcset="https://tigor.com.ua/blog/wp-content/uploads/2008/07/devbar-226x300.png 226w, https://tigor.com.ua/blog/wp-content/uploads/2008/07/devbar.png 275w" sizes="auto, (max-width: 226px) 100vw, 226px" /></p>
<p><strong>2. </strong><strong><a href="http://www.my-debugbar.com/wiki/CompanionJS/HomePage">Companion.JS</a></strong><br />
Тип: бесплатное расширение<br />
Версия:  v0.3 (2008-02-02)<br />
Поддержка: IE6, IE7<br />
Описание:  добавляет базовые возможности для отладки JavaScript. Облеченная версия отладчика FireBug. Разработчик  один и тот же что и DebugBar.<br />
Требует установки модуля <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=2F465BE0-94FD-4569-B3C4-DFFDF19CCD99&amp;displaylang=en">Microsoft Script Debugger</a>.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-158" title="consolelog" src="http://tigor.com.ua/blog/wp-content/uploads/2008/07/consolelog.gif" alt="" width="500" height="170" srcset="https://tigor.com.ua/blog/wp-content/uploads/2008/07/consolelog.gif 500w, https://tigor.com.ua/blog/wp-content/uploads/2008/07/consolelog-300x102.gif 300w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p><strong>3. <a href="http://en.wikipedia.org/wiki/IE_Developer_Toolbar">Internet Explorer Developer Toolbar</a></strong><br />
Тип: бесплатное расширение<br />
Версия: 1.00.2188.0 (2007-09-05)<br />
Поддержка: IE6, IE7<br />
Описание: создан самой компанией Microsoft. Ничем не хуже плагина для браузера Firefox  <a href="http://chrispederick.com/work/web-developer/">Web Developer</a>. Есть DOM, валидация <span>HTML, CSS, WAI, and RSS web feed links&#8230;</span></p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="size-full wp-image-161 aligncenter" title="devtoolbar23" src="http://tigor.com.ua/blog/wp-content/uploads/2008/07/devtoolbar23.png" alt="" width="500" height="127" srcset="https://tigor.com.ua/blog/wp-content/uploads/2008/07/devtoolbar23.png 500w, https://tigor.com.ua/blog/wp-content/uploads/2008/07/devtoolbar23-300x76.png 300w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p><strong>4. <a href="http://www.ieinspector.com/dominspector/index.html">IE WebDeveloper &#8211; Dom Inspector</a></strong><br />
Тип: расширение, платное $79<br />
Версия: 2.4.1 (2008-03-12)<br />
Поддержка: IE6, IE7<br />
Описание: DOM-View, DOM Inspect, отображение CSS, валидация онлайн (Online validate W3C HTML, HTML Tidy, CSS, Feed, Links, WAI, Section 508 and P3P. Local validate W3C HTML and CSS), онлайн утилиты для вебмастера (Whois lookup, Ping, Trace route, DNS and My IP, Website details by alexa.com, Webpage speed report).<br />
Впечатления: очень хороший аддон</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="size-full wp-image-166 aligncenter" title="webpage_inspector_s" src="http://tigor.com.ua/blog/wp-content/uploads/2008/07/webpage_inspector_s.gif" alt="" width="255" height="192" /></p>
<p><strong>5. <a href="http://www.visionaustralia.org.au/ais/toolbar/">Web Accessibility Toolbar</a></strong><br />
Тип: бесплатное расширение<br />
Версия: 1.2 (2006-12-04)<br />
Поддержка: IE6</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="size-full wp-image-164 aligncenter" title="web_accessibility_toolbar" src="http://tigor.com.ua/blog/wp-content/uploads/2008/07/web_accessibility_toolbar.png" alt="" width="500" height="52" srcset="https://tigor.com.ua/blog/wp-content/uploads/2008/07/web_accessibility_toolbar.png 532w, https://tigor.com.ua/blog/wp-content/uploads/2008/07/web_accessibility_toolbar-300x31.png 300w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p><strong>6. <a href="http://getfirebug.com/lite.html">Firebug Lite</a></strong><br />
Тип: Javascript файл<br />
Версия: 1.2 (2008-07-25)<br />
Описание: легкий аналог плагина FireBug для Firefox<br />
Впечатления: лучшее решение на Яваскрипте<br />
<strong></strong></p>
<p><strong>7. <a href="http://icant.co.uk/sandbox/fauxconsole/">Faux Console</a></strong><br />
Тип: Javascript файл<br />
Версия: 2007-02-13<br />
Описание: очень простенький отладчик, функциональности особой нету, только обычный console.log</p>
<p><strong>8. </strong><a href="http://clientside.cnet.com/?p=144"><strong>dbug &#8211; a console.log (firebug) wrapper (CNET Clientside Mootools)</strong><br />
</a> Тип: Javascript файл<br />
Описание: интересное решение, смотрел давно, но после появления FireBug Lite интерес к этому решению пропал</p>
<p><strong>Ссылки по теме:</strong><br />
&bull; <a href="http://www.jstoolbox.com/2008/03/21/otladka-skriptov-v-internet-explorer/">Отладка скриптов в Internet Explorer</a><br />
&bull; <a href="http://habrahabr.ru/blog/webdev/39340.html">Отладка JavaScript в MS IE средствами Visual Web Developer</a><br />
&bull; <a href="http://javascript.ru/tools/basic/internet-explorer">Отладка для Internet Explorer (в Visual Studio)</a><br />
&bull; <a href="http://vremenno.net/js/browser-addons-for-web-developers/">Обзор средств для разработчиков в разных браузерах</a></p><p>The post <a href="https://tigor.com.ua/blog/2008/07/25/ie-javascript-debugger-extensions/">Инструменты отладки Javascript скриптов в Internet Explorer (IE)</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://tigor.com.ua/blog/2008/07/25/ie-javascript-debugger-extensions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHP профайлер Xdebug</title>
		<link>https://tigor.com.ua/blog/2008/07/21/php-profiler-debugger-xdebug/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=php-profiler-debugger-xdebug</link>
					<comments>https://tigor.com.ua/blog/2008/07/21/php-profiler-debugger-xdebug/#comments</comments>
		
		<dc:creator><![CDATA[Igor]]></dc:creator>
		<pubDate>Mon, 21 Jul 2008 21:11:26 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Отладка]]></category>
		<category><![CDATA[xdebug]]></category>
		<guid isPermaLink="false">http://tigor.com.ua/?p=58</guid>

					<description><![CDATA[<p>Есть такой замечательный отладчик/профайлер Xdebug. Как для Windows так и для никсов. Сайт разработчика: xdebug.org. Что это такое это? Это расширение для PHP, которое работает как debugger и profiler. В настройках можно указать, что использовать, а что нет, можно все включить. Очень важные параметр xdebug.profiler_output_name, если его оставить по умолчанию, тогда вся отладочная информация будет [&#8230;]</p>
<p>The post <a href="https://tigor.com.ua/blog/2008/07/21/php-profiler-debugger-xdebug/">PHP профайлер Xdebug</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Есть такой замечательный отладчик/профайлер Xdebug. Как для Windows так и для никсов.</p>
<p>Сайт разработчика: <a href="http://xdebug.org">xdebug.org</a>.</p>
<p>Что это такое это? Это расширение для PHP, которое работает как debugger и profiler. В настройках можно указать, что использовать, а что нет, можно все включить. Очень важные параметр <strong>xdebug.profiler_output_name</strong>, если его оставить по умолчанию, тогда вся отладочная информация будет записываться в один файл, а это бывает плохо, т.к. грузиться, например, страница, а с ней запускается 3- и больше файлов PHP: сама страница, Ajax, CSS, локализация. И в итоге в отладке будет последний файл. А так с помощью маски получаем уникальные файлы. В данном случае в таком виде: cachegrind.out.1208803760.D_home_demo-site_htdocs_sf_sandbox_web_index_php. В общем на офф. сайте можно найти подробнейшую помощь по Xdebug.</p>
<p>Подключение его в php.ini:</p>
<pre class="brush: php; title: ; notranslate">
&#x5B;Xdebug]
zend_extension_ts=&quot;php_xdebug-2.0.3-5.2.5.dll&quot;
xdebug.default_enable = Off

xdebug.profiler_enable = Off ;Off
xdebug.profiler_output_dir = &quot;/tmp/xdebug/cachegrid&quot;
xdebug.profiler_append = On
xdebug.profiler_output_name = &quot;cachegrind.out.%t.%s&quot;

xdebug.auto_trace = Off
xdebug.trace_format = 0
xdebug.collect_params = 1
xdebug.collect_return = 1
xdebug.collect_includes = 1
xdebug.trace_options = 1
xdebug.trace_output_dir = &quot;/tmp/xdebug/trace&quot;
</pre>
<p><strong>Программы для просмотра логов profiler:</strong></p>
<ol>
<li><a href="http://kcachegrind.sf.net/">KCacheGrind</a> &#8211; не юзал.</li>
<li><a href="http://sourceforge.net/projects/wincachegrind/">WinCacheGrind</a> &#8211; софтина под Винду, старая, апреля 2005 года. На её данные особо опираться не следует, т.к. информация относительная. Но общую картину дать может. Сам пользуюсь. Несколько раз показала интересные вещи, плюс помогла найти баги.</li>
<li><a href="http://code.google.com/p/cachegrindvisualizer/">CachegrindVisualizer</a> &#8211; с офф. сайта. Это кроссплатформенная программа для визуализации файлов в формате Callgrind, в частности, его подмножества используемого Cachegrind. Профайлер Xdebug является совместимым с Cachegrind.</li>
<li><a href="http://code.google.com/p/webgrind/">Webgrind</a> &#8211; Xdebug profiling c web frontend на PHP5. Все просто скопировал файлы, конфиг прочитался автоматом из настроек php.ini. Стоит только выбрать файл, и результат на экран. Минус &#8211; все написано на ПХП и если файл профайлера огромный, то будут тормоза.</li>
<li><a href="http://code.google.com/p/xdebugclient/">XDebugClient</a> &#8211; это клиент для дебаггера, прослушает его и отображает у себя в консоли, только под Windows, не проверял.</li>
</ol>
<p><strong>Что можно почитать:</strong></p>
<ul>
<li><a href="http://www.ibm.com/developerworks/ru/library/os-php-xdebug/index.html">IBM developerWorks Россия: Найдите ошибки в PHP-приложениях при помощи Xdebug</a></li>
<li><a href="http://habrahabr.ru/blog/php/37002.html">Habrahabr: Introducing xdebug</a></li>
<li><a href="http://habrahabr.ru/blog/php/37440.html">Habrahabr: Tracing PHP Applications with xdebug</a></li>
<li><a href="http://habrahabr.ru/blogs/php/31468/">Habrahabr: Profiling PHP Applications With xdebug</a></li>
<li><a href="http://habrahabr.ru/blogs/php/31505/">Habrahabr: Debugging PHP applications with xdebug</a></li>
<li><a href="http://php.by/print.php?type=N&amp;item_id=94">Cachegrind Visualizer</a></li>
<li><a href="http://gggeek.altervista.org/2007/11/26/the-completely-unofficial-xdebugini/">The completely unofficial Xdebug.ini</a></li>
<li><a href="http://sourceforge.net/projects/xcallgraph/">XCallGraph &#8211; XDebug profiles viewer</a> (<a href="http://phpclub.ru/talk/threads/xcallgraph-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D1%82%D1%83%D0%BB-%D0%B4%D0%BB%D1%8F-%D0%BF%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B0-%D0%BF%D1%80%D0%BE%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-xdebug.72173/">обсуждение XCallGraph на форуме phpclub</a>)</li>
</ul><p>The post <a href="https://tigor.com.ua/blog/2008/07/21/php-profiler-debugger-xdebug/">PHP профайлер Xdebug</a> first appeared on <a href="https://tigor.com.ua/blog">Блог веб-разработчика</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://tigor.com.ua/blog/2008/07/21/php-profiler-debugger-xdebug/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/

Page Caching using Disk: Enhanced 

Served from: tigor.com.ua @ 2025-08-12 18:40:23 by W3 Total Cache
-->