<?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>Блог веб-разработчика &#187; PHP</title>
	<atom:link href="http://tigor.com.ua/blog/category/development/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://tigor.com.ua/blog</link>
	<description>О разработке веб-приложений на Symfony</description>
	<lastBuildDate>Thu, 10 Nov 2011 20:43:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Отзыв о Symfony Camp UA 2011</title>
		<link>http://tigor.com.ua/blog/2011/11/02/symfony-camp-ua-2011-report/</link>
		<comments>http://tigor.com.ua/blog/2011/11/02/symfony-camp-ua-2011-report/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 09:08:28 +0000</pubDate>
		<dc:creator>ingvar</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Конференции]]></category>
		<category><![CDATA[sfcampua]]></category>
		<category><![CDATA[Symfony2]]></category>
		<category><![CDATA[SymfonyCampUA]]></category>
		<category><![CDATA[UaSymfonyCamp]]></category>

		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=2106</guid>
		<description><![CDATA[29 октября в Киеве состоялась третья по счету конференция Symfony Camp UA 2011. В этом году конференцию посетило 200 человек. География участников &#8211; Украина, Россия, Беларусь, Молдова. Мой отчет &#8211; это взгляд организатора, докладчика и обычного посетителя конференции. Интерес к Symfony Framework за год вырос, особенно учитывая выход новой версии Symfony2. Хотя новая версия фреймворка [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-2108 aligncenter" title="Symfony Camp UA 2011" src="http://tigor.com.ua/blog/wp-content/uploads/2011/11/Symfony-Camp-UA-2011.jpg" alt="Symfony Camp UA 2011" width="600" height="400" /></p>
<p>29 октября в Киеве состоялась третья по счету конференция <a href="http://2011.symfonycamp.org.ua/">Symfony Camp UA 2011</a>. В этом году конференцию посетило 200 человек. География участников &#8211; Украина, Россия, Беларусь, Молдова. Мой отчет &#8211; это взгляд организатора, докладчика и обычного посетителя конференции.</p>
<p><span id="more-2106"></span></p>
<p>Интерес к Symfony Framework за год вырос, особенно учитывая выход новой версии <a href="http://symfony.com/">Symfony2</a>. Хотя новая версия фреймворка &#8211; это фактически совсем другое решение, и все, что от него осталось, &#8211; это только название.</p>
<p>Как оказалось, зал не был готов к вместительности 200 участников.</p>
<p><img class="aligncenter size-full wp-image-2112" style="border: 1px solid #E0E0E0;" title="Symfony Camp UA 2011- twitter #sfcampua" src="http://tigor.com.ua/blog/wp-content/uploads/2011/11/sfcampua_twitter_01.png" alt="Symfony Camp UA 2011- twitter #sfcampua" width="520" height="66" /></p>
<p>Нам пришлось ставить дополнительные стулья, чтобы люди не стояли. Переговорив с орг. комитетом и проанализировав анкеты, мы сделали выводы, что следущий Symfony Camp UA 2012 должен быть лучше. А чтобы сделать следующее мероприятие лучше, естественно, нужны финансы. Поэтому следущая конференция будет платная &#8211; это позволит, как минимум, решить все вопросы с помещением и технические моменты (интернет, проектор, звук, видео, обеды).</p>
<p><img class="aligncenter size-full wp-image-2132" style="border: 1px solid #E0E0E0;" title="Symfony Camp UA 2011- twitter #sfcampua" src="http://tigor.com.ua/blog/wp-content/uploads/2011/11/sfcampua_twitter_03.png" alt="Symfony Camp UA 2011- twitter #sfcampua" width="520" height="74" /></p>
<p>В этом году нашими <a href="http://2011.symfonycamp.org.ua/sponsors/">спонсорами</a> выступили такие компании, как <a href="http://servergrove.com/">ServerGrove</a>, <a href="http://ciklum.net/">Ciklum</a>, <a href="http://ua.magento.com/">Magento</a>, <a href="https://github.com/">GitHub</a>, <a href="http://www.jetbrains.com/phpstorm/">JetBrains</a>. Хочется отдельно их поблагодарить за поддержку и помощь. Отдельно хочу отметить наших украинских партнеров Ciklum и Magento, которые помогают развивать IT в Украине. Почему-то очень сложно донести до украинских компаний, что такие мероприятия в одном месте собирают огромное количество высококвалифицированных специлистов не только из Украины, но из всех стран СНГ. И, оказывается, что проще достучаться до иностранных компаний, чем до наших <img src='http://tigor.com.ua/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> .</p>
<p><img class="aligncenter size-full wp-image-2120" style="border: 1px solid #E0E0E0;" title="Symfony Camp UA 2011- twitter #sfcampua" src="http://tigor.com.ua/blog/wp-content/uploads/2011/11/sfcampua_twitter_021.png" alt="Symfony Camp UA 2011- twitter #sfcampua" width="520" height="77" /></p>
<p>В этом году в <a href="http://2011.symfonycamp.org.ua/program/">программе конференции</a> было 6 докладов, но, к сожалению, в последний момент 2 докладчика не смогли выступить. С одной стороны &#8211; это плохо, т.к. всегда хочется больше интересных докладов, но, с другой стороны, можно выделить больше времени на общение, знакомство. Опрос участников конференции показал, что только 20% аудитории работает с Symfony2. В следующем году количество разработчиков Symfony2 возрастет, и это позволит Symfony Camp UA 2012 сделать более интересным и полезным мероприятием. Например, в прошлом году на <a href="http://2010.symfonycamp.org.ua/">Symfony Camp UA 2010</a> было <a href="http://2010.symfonycamp.org.ua/program/">12 докладов</a>. В 2012 году необходимо сделать или 2 потока, или двухдневную конференцию. Можно будет разделить доклады на 2 группы &#8211; для новичков и для тех, кто уже имеет опыт работы с Symfony2.</p>
<p>Отдельное спасибо Help Team, которые помогали нам на конференции &#8211; это сотрудники компаний <a href="http://lazy-ants.de/">Lazy Ants</a> и <a href="http://argentum.ua/ru/">Argentum IT Lab</a>.</p>
<p><strong>Презентации:</strong></p>
<ul>
<li><a href="http://slidesha.re/txmMeS">http://slidesha.re/txmMeS</a></li>
</ul>
<p><strong>Видео:</strong></p>
<ul>
<li><a href="http://bit.ly/tQNRLq">http://bit.ly/tQNRLq</a></li>
</ul>
<p><strong>Фотографии:</strong></p>
<ul>
<li><a href="http://bit.ly/vBmN37">http://bit.ly/vBmN37</a></li>
<li><a href="http://bit.ly/vzE18D">http://bit.ly/vzE18D</a></li>
<li><a href="http://bit.ly/vSVH8p ">http://bit.ly/vSVH8p</a></li>
</ul>
<p><strong>Другие отзывы о конференции:</strong></p>
<ul>
<li><a href="http://451f.com.ua/symfony-camp-ua-2011-as-it-was/">Symfony Camp UA 2011 – как это было</a></li>
<li><a href="http://tyomo4ka.blogspot.com/2011/10/symfony-road-trip-symfony-camp.html">Symfony road trip, или Как мы на Symfony Camp ездили</a></li>
<li><a href="http://kronus.me/2011/10/symfony-camp-ua-2011/">Symfony Camp UA 2011</a></li>
<li><a href="http://blog.stfalcon.com/2011/10/symfony2-savetime/">Symfony2. На чем можно сэкономить время при разработке?</a></li>
<li><a href="http://symfony.org.ua/2011/11/symfony-conf-2011-v-kieve-nebolshoj-otchet/">Symfony Conf 2011 в Киеве – небольшой отчет</a></li>
<li><a href="http://igor-negrutsa.info/blogs/id/15">Тренинг и Symfony Camp UA 2011</a></li>
</ul>
<p><strong>Презентация моего доклада:</strong> Обзор Redis storage</p>
<div id="__ss_9951944" style="width: 595px; margin: 0 auto;">
<p><strong style="display: block; margin: 12px 0 4px;"><a title="Обзор Redis storage / Symfony Camp UA 2011" href="http://www.slideshare.net/ingvar/redis-storage" target="_blank">Обзор Redis storage / Symfony Camp UA 2011</a></strong> <object id="__sse9951944" width="595" height="497" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony-camp-ua-2011-redis-111030161524-phpapp02&amp;stripped_title=redis-storage&amp;userName=ingvar" /><param name="allowscriptaccess" value="always" /><param name="allowfullscreen" value="true" /><embed id="__sse9951944" width="595" height="497" type="application/x-shockwave-flash" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony-camp-ua-2011-redis-111030161524-phpapp02&amp;stripped_title=redis-storage&amp;userName=ingvar" allowFullScreen="true" allowScriptAccess="always" allowscriptaccess="always" allowfullscreen="true" /> </object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/ingvar" target="_blank">Igor Brovchenko</a></div>
</div>
<p><strong>Symfony Camp UA 2012<br />
</strong></p>
<ul>
<li>пройдет ориентировочно осенью 2012 года</li>
<li>будет платным мероприятием</li>
<li>вероятно будет проходить в 2 потока</li>
<li>будет включать больше технических докладов по Symfony2</li>
<li>возможно будут участвовать иностранные докладчики (ведем переговоры)</li>
</ul>
<p><strong>А каким Вы хотите видеть Symfony Camp UA 2012?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://tigor.com.ua/blog/2011/11/02/symfony-camp-ua-2011-report/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Zend Framework Day 2011</title>
		<link>http://tigor.com.ua/blog/2011/10/13/zend-framework-day-2011/</link>
		<comments>http://tigor.com.ua/blog/2011/10/13/zend-framework-day-2011/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 13:50:19 +0000</pubDate>
		<dc:creator>ingvar</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Конференции]]></category>

		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=2100</guid>
		<description><![CDATA[12 ноября, в Киеве, пройдет конференция &#171;Zend Framework Day&#187; &#8211; посвященная популярному PHP фреймворку Zend Framework. Zend Framework Day является наследником конференции ZFConf Ukraine 2010, и соберет лучших докладчиков в этой области, а также большое количество профессиональных разработчиков. Среди докладчиков непосредственные разработчики компонент Zend Framework. Событие соберет лучших PHP и ZF специалистов из Украины, России, Белоруссии и [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2101" title="zend framework day" src="http://tigor.com.ua/blog/wp-content/uploads/2011/10/zend-framework-day.png" alt="" width="162" height="172" />12 ноября, в Киеве, пройдет конференция &laquo;Zend Framework Day&raquo; &#8211; посвященная популярному PHP фреймворку Zend Framework. Zend Framework Day является наследником конференции ZFConf Ukraine 2010, и соберет лучших докладчиков в этой области, а также большое количество профессиональных разработчиков.</p>
<p>Среди докладчиков непосредственные разработчики компонент Zend Framework. Событие соберет лучших PHP и ZF специалистов из Украины, России, Белоруссии и других стран СНГ.</p>
<p>Конференция будет проходить в конференц зале отеля &laquo;Казацкий&raquo; (ул. Михайловская 1/3, рядом с Площадью Независимости). Участия платное (детали на <a href="http://frameworksdays.com/event/zend-framework-day-2011">странице</a>), количество мест ограничено.</p>
<p>Со списком тем и докладчиков можно ознакомиться по <a href="http://frameworksdays.com/event/zend-framework-day-2011/speakers">ссылке</a>.</p>
<p>Для участия в конференции необходимо пройти регистрацию на <a href="http://frameworksdays.com/register" rel="nofollow">странице</a>, а затем произвести оплату из личного кабинета.</p>
<p>Сайт конференции &#8211; <a href="http://frameworksdays.com/event/zend-framework-day-2011">http://frameworksdays.com/event/zend-framework-day-2011</a><br />
Twitter &#8211; <a href="http://twitter.com/fwdays">http://twitter.com/fwdays</a><br />
Facebook – <a href="http://facebook.com/fwdays">http://facebook.com/fwdays</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tigor.com.ua/blog/2011/10/13/zend-framework-day-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD:  Fatal error: Unknown: apc_fcntl_unlock failed: in Unknown on line 0</title>
		<link>http://tigor.com.ua/blog/2011/06/12/freebsd-fatal-error-unknown-apc_fcntl_unlock-failed-in-unknown-on-line-0/</link>
		<comments>http://tigor.com.ua/blog/2011/06/12/freebsd-fatal-error-unknown-apc_fcntl_unlock-failed-in-unknown-on-line-0/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 07:53:55 +0000</pubDate>
		<dc:creator>ingvar</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Server software]]></category>
		<category><![CDATA[apc]]></category>

		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=1976</guid>
		<description><![CDATA[После одного из обновлений пакета apc для PHP сайты перестали работать, а в логах можно было наблюдать следующую картину: Чтобы решить проблему нужно пересобрать APC с опцией SEMAPHORES: отмечаем нужную опцию и пересобираем pecl-APC. Если нужно, то удаляем его предварительно: и устанавливаем заново Не забываем перезапустить Apache. После этого все должно заработать. Bug #22688: Unknown: [...]]]></description>
			<content:encoded><![CDATA[<p>После одного из обновлений пакета apc для PHP сайты перестали работать, а в логах можно было наблюдать следующую картину:</p>
<pre class="brush: php; title: ; notranslate">
[Fri May 27 14:24:21 2011] [error] [client 109.254.68.55] PHP Fatal error:  Unknown: apc_fcntl_unlock failed: in Unknown on line 0
</pre>
<p>Чтобы решить проблему нужно пересобрать APC с опцией <strong>SEMAPHORES</strong>:</p>
<pre class="brush: php; title: ; notranslate">
# cd /usr/ports/www/pecl-APC
# make config
</pre>
<p><a href="http://tigor.com.ua/blog/wp-content/uploads/2011/06/apc-make-config.png"><img src="http://tigor.com.ua/blog/wp-content/uploads/2011/06/apc-make-config.png" alt="" title="pecl-APC config" width="491" height="291" class="aligncenter size-full wp-image-1977" /></a></p>
<p>отмечаем нужную опцию и пересобираем pecl-APC. Если нужно, то удаляем его предварительно: </p>
<pre class="brush: php; title: ; notranslate">
# make deinstall clean
</pre>
<p>и устанавливаем заново</p>
<pre class="brush: php; title: ; notranslate">
# make install clean
</pre>
<p>Не забываем перезапустить Apache. После этого все должно заработать.</p>
<ul>
<li><a href="http://pecl.php.net/bugs/bug.php?id=22688">Bug #22688: Unknown: apc_fcntl_unlock failed</a</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tigor.com.ua/blog/2011/06/12/freebsd-fatal-error-unknown-apc_fcntl_unlock-failed-in-unknown-on-line-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ZFConf 2011: Список докладов и финальная регистрация на второй российской конференции по Zend Framework</title>
		<link>http://tigor.com.ua/blog/2011/05/05/zfconf-2011/</link>
		<comments>http://tigor.com.ua/blog/2011/05/05/zfconf-2011/#comments</comments>
		<pubDate>Thu, 05 May 2011 10:42:17 +0000</pubDate>
		<dc:creator>ingvar</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Конференции]]></category>
		<category><![CDATA[Zend framework]]></category>
		<category><![CDATA[zfconf]]></category>

		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=1950</guid>
		<description><![CDATA[Основные подготовительные работы по конференции закончены. Доклады сформированы. Среди спикеров представители KnpLabs, Magento, JetBrains, Sphinx и других известных компаний. Открыта финальная регистрация! Если Вы проходили предварительную регистрацию, то для прохождения финальной регистрации Вам нужно перейти по специальной ссылке, отправленной на e-mail. Введенную ранее информацию нужно будет только подтвердить. Если ссылка не приходила Вам, ее можно [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1951" title="Конференция ZFConf 2011" src="http://tigor.com.ua/blog/wp-content/uploads/2011/05/zfconf_ru_2011.png" alt="Конференция ZFConf 2011" width="171" height="148" /></p>
<p>Основные подготовительные работы по конференции закончены. Доклады сформированы. Среди спикеров представители KnpLabs, Magento, JetBrains, Sphinx и других известных компаний.</p>
<p>Открыта <a href="http://www.zfconf.ru/registration/" target="_blank"><strong>финальная регистрация</strong></a>!</p>
<p><strong>Если Вы проходили предварительную регистрацию</strong>, то для прохождения финальной регистрации Вам нужно перейти по специальной ссылке, отправленной на e-mail. Введенную ранее информацию нужно будет только подтвердить. Если ссылка не приходила Вам, ее можно запросить через <a href="http://www.zfconf.ru/get-registration-path/" target="_blank">специальную форму</a>.</p>
<p>Пожалуйста, обратите внимание на то, что <strong>изменилось <a href="http://www.zfconf.ru/2011/location/" target="_blank">место проведения</a></strong>! Мероприятие будет проходить на прошлогодней площадке — в актовом зале ЛГТЦ (Ленгипротранс-Центр), по адресу: Московский пр., 143, ст. м. «Электросила». Кофе-брейки и обсуждения на флипчартах будут проходить в фойе.</p>
<p><span id="more-1950"></span><strong>Cписок докладов:</strong></p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/flexible-architecture-using-dependency-injection/" target="_blank">Гибкая архитектура Zend Framework приложений с использованием Dependency Injection</a></strong><br />
Алексей Качаев (<a href="http://cogniance.com/" target="_blank">Сogniance</a>, Senior PHP Developer)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/performance-increasing-with-phpdaemon-varnish-esi/" target="_blank">Воюем за ресурсы: Повышение производительности Zend Framework приложения с помощью phpDaemon, Varnish и ESI</a></strong><br />
Алексей Качаев (<a href="http://cogniance.com/" target="_blank">Сogniance</a>, Senior PHP Developer)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/behavior-driven-development/" target="_blank">Behavior Driven Development в PHP и Zend Framework</a></strong><br />
Константин Кудряшов (<a href="http://www.knplabs.com/" target="_blank">KnpLabs</a>, Senior Web Developer)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/multitasking-distributed-system-with-job-queue/" target="_blank">Разделение труда: Организация многозадачной, распределенной системы в Zend Framework с помощью Job Queue</a></strong><br />
Александр Готгельф (<a href="http://www.magentocommerce.com/" target="_blank">Magento</a>, PHP-разработчик)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/how-can-help-development-environment/" target="_blank">Как может помочь среда разработки при написании приложения на Zend Framework?</a></strong><br />
Николай Матвеев (<a href="http://www.jetbrains.com/" target="_blank">JetBrains</a>, разработчик)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/creating-rest-api-for-third-party-developers-and-mobile-devices-with-oauth/" target="_blank">Создание REST-API для сторонних разработчиков и мобильных устройств с авторизацией по протоколу OAuth 1.0</a></strong><br />
Дмитрий Чижевский (<a href="http://zenmoney.ru/" target="_blank">Дзен-мани</a>, разработчик)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/fat-model-through-orm-development-history/" target="_blank">Толстая модель: История разработки собственного ORM</a></strong><br />
Михаил Шамин (<a href="http://geometria.ru/" target="_blank">Геометрия</a>, ведущий разработчик)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/what-is-sphinx-and-how-use-it-with-php/" target="_blank">Что такое Sphinx, зачем он вообще нужен и как его использовать с PHP (от простого индекса до поискового кластера)</a></strong><br />
Владимир Федорков (<a href="http://sphinxsearch.com/" target="_blank">Sphinx</a>, Director of Professional Services)</p>
<p>Стоимость участия в мероприятии составит 1500 руб. В данную сумму входит: участие в самой конференции, кофе-брейки (от внешней кейтеринг-компании), пакет материалов участника и доступ к профессиональным видеозаписям докладов (после мероприятия). Доступно <a href="http://www.zfconf.ru/payment-types/" target="_blank">множество способов оплаты</a>.</p>
<p>Торопитесь, <strong>количество мест ограничено</strong>!</p>
<p>Обязательно следите за последними новостями:</p>
<p><strong>RSS-канал:</strong> <a href="http://feeds.feedburner.com/zfconf" target="_blank">feeds.feedburner.com/zfconf</a><br />
<strong>Twitter:</strong> <a href="http://twitter.com/zfconf" target="_blank">@zfconf</a><br />
<strong>Группа ВКонтакте:</strong> <a href="http://vkontakte.ru/club14951507" target="_blank">vkontakte.ru/club14951507</a></p>
<p><strong>Организатор:</strong> <a href="http://www.wizartech.ru/" target="_blank">компания Wizartech</a><br />
<strong>Партнеры:</strong> <a href="http://zendframework.ru/" target="_blank">сообщество zendframework.ru</a> и <a href="http://zfconf.org.ua/" target="_blank">конференция ZFConf Ukraine</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tigor.com.ua/blog/2011/05/05/zfconf-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Отчет по конференции MageConf и ZFConf Ukraine 2010</title>
		<link>http://tigor.com.ua/blog/2010/11/28/conference-mageconf-and-zfconf-2010/</link>
		<comments>http://tigor.com.ua/blog/2010/11/28/conference-mageconf-and-zfconf-2010/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 00:00:09 +0000</pubDate>
		<dc:creator>ingvar</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Конференции]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[Zend framework]]></category>
		<category><![CDATA[zfconf]]></category>

		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=1753</guid>
		<description><![CDATA[Побывал сегодня на совместной конференции MageConf &#38; ZFConf Ukraine. Впечатления от мероприятия положительные. По предварительным данным зарегистрировалось порядка 700 человек, а посетило конференцию человек 300-400, а может и больше. Во-первых, хочется поблагодарить всех тех людей, которые организовали мероприятие такого масштабов. Еще не видел столько php программистов в одном месте . Отдельное спасибо спонсорам &#8211; компании [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1748" title="MageConf and ZFConf Ukraine 2010" alt="MageConf and ZFConf Ukraine 2010" src="http://tigor.com.ua/blog/wp-content/uploads/2010/11/zfconfua_and_mageconf.jpg" alt="" width="236" height="137" /> Побывал сегодня на совместной конференции <a href="http://mageconf.com/">MageConf</a> &amp; <a href="http://zfconf.org.ua/">ZFConf Ukraine</a>. Впечатления от мероприятия положительные. По предварительным данным зарегистрировалось порядка 700 человек, а посетило конференцию человек 300-400, а может и больше.</p>
<p>Во-первых, хочется поблагодарить всех тех людей, которые организовали мероприятие такого масштабов. Еще не видел столько php программистов в одном месте <img src='http://tigor.com.ua/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Отдельное спасибо спонсорам &#8211; компании Magento. </p>
<p><span id="more-1753"></span></p>
<p>Регистрация проходила быстро, в раздаточных материалах было несколько проспектов о компании Magento, программка конференции и анкета. Понравилась идея с бейджами &#8211; с одной стороны имя, а с другой &#8211; программа мероприятия, очень удобно. Хочется отметить организацию кофе-брейков и обеда &#8211; все было отлично несмотря на такое количество посетителей.</p>
<p>Вся конференция проходила в 4 потока и состояла из 23 докладов. Как показала практика, 4 потока &#8211; это многовато. Многие интересные доклады проходили одновременно и приходилось выбирать что-то одно <img src='http://tigor.com.ua/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> . Будем надеяться, что в скором времени получим доступ к презентациям и видео. </p>
<p>В своей работе я использую из Zend Framework только отдельные модули, и поэтому планировал посетить несколько докладов по ZF 2.0, чтобы поближе познакомиться с новыми фичами, тем более, что на конференции выступали разработчки Zend Framework Core Team. Но на первом докладе меня хватило минут на 10 &#8211; слушать о том, что написано на официальном сайте (документация, milestone) &#8211; мне было не интересно.</p>
<p>После чего я направился в секцию Mix на доклад &laquo;Мобильные клиенты интернет-магазинов&raquo;, но так туда и не дошел, т.к. попал на доклад про буратино и велосипеды <img src='http://tigor.com.ua/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &laquo;10 000 вёдер или в погоне за Ключём от всех дверей&raquo;, где выступал Виталий Коротун, имхо &#8211; один из лучших докладов.</p>
<p>Про что был  доклад &laquo;Особенности юнит-тестирования при разработке расширений к open-source продуктам&raquo; я так и не понял, но явно не про Unit-тесты, было скучно, а идея сделать Unit-тесты в продукте Magento платными &#8211; бррр&#8230;</p>
<p>После чего присутствовал на двух докладах от Кирилла Климова &laquo;Применение Scrum и Kanban для разработки web-приложений&raquo; и &laquo;Применение Continuous Integration в PHP проектах&raquo;. Первый доклад хоть и поздно начался из-за технических проблем, но для меня был очень полезным и интересным, учитывая еще то, что мы в течении всего обеда дополнительно обсуждали наши насущные проблемы с внедрением и использованием практик Agile. Второй доклад был не менее интересным, чем первый.</p>
<p>Весьма познавательным оказался доклад &laquo;Управление продуктом в стиле Magento Unified Process&raquo; от Евгения Веселова. Материал был больше ориентирован для Project Manager.</p>
<p>А в завершение конференции послушал доклад &laquo;NoSQL и Zend Framework&raquo; от ребят из российской компании Geometry Lab. Зажигали по полной. Самое главное узнал от чего растет нагрузка?? &#8211; &laquo;все дело в сисьсках&raquo; <img src='http://tigor.com.ua/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . А если серьезно, то узнал несколько полезных деталей про MongoDB и Rediska, которые надо будет исследовать.</p>
<p>Напоследок немного фотографий из твиттера:<br />
<a href="http://twitpic.com/3am4ex">http://twitpic.com/3am4ex</a><br />
<a href="http://twitpic.com/3aoetk">http://twitpic.com/3aoetk</a><br />
<a href="http://twitpic.com/3aoetk">http://twitpic.com/3aoetk</a><br />
<a href="http://twitpic.com/3aqf9u">http://twitpic.com/3aqf9u</a><br />
<a href="http://twitpic.com/3aqf54">http://twitpic.com/3aqf54</a><br />
<a href="http://twitpic.com/3aqf9u">http://twitpic.com/3aqf9u</a><br />
<a href="http://twitpic.com/3apgd1">http://twitpic.com/3apgd1</a><br />
<a href="http://twitpic.com/3amrwz">http://twitpic.com/3amrwz</a></p>
<p>Мне в целом конференция понравилась. В следующий раз мероприятие должно быть еще интереснее и масштабнее. А идея совместных конференций &#8211; отличная, интересно, а если еще добавить Symfony и Drupal <img src='http://tigor.com.ua/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ?</p>
]]></content:encoded>
			<wfw:commentRss>http://tigor.com.ua/blog/2010/11/28/conference-mageconf-and-zfconf-2010/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>27 ноября, Киев. Конференция ZFConf Ukraine &amp; MageConf</title>
		<link>http://tigor.com.ua/blog/2010/11/11/conference-zfconf-ukraine-mageconf/</link>
		<comments>http://tigor.com.ua/blog/2010/11/11/conference-zfconf-ukraine-mageconf/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 20:43:32 +0000</pubDate>
		<dc:creator>ingvar</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Конференции]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[Zend framework]]></category>
		<category><![CDATA[zfconf]]></category>

		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=1745</guid>
		<description><![CDATA[27го ноября в в Киеве пройдет бесплатная, международная, совместная конференция ZFConf Ukraine &#38; MageConf. Цель конференции &#8211; объединить лучших специалистов PHP и Zend Framework Украины, России и других стран СНГ. ZFConf Ukraine – первая в Украине конференция по Zend Framework, проводится в партнерстве с ZFConf Russia и сообществом zendframework.ru. ZFConf Russia была первой конференцией по [...]]]></description>
			<content:encoded><![CDATA[<p><img src="file:///Users/igor/Downloads/zfconfua_and_mageconf.jpg" alt="" /><a href="http://tigor.com.ua/blog/wp-content/uploads/2010/11/zfconfua_and_mageconf.jpg"><img class="alignleft size-full wp-image-1748" title="zfconfua_and_mageconf" src="http://tigor.com.ua/blog/wp-content/uploads/2010/11/zfconfua_and_mageconf.jpg" alt="" width="236" height="137" /></a>27го ноября в в Киеве пройдет бесплатная, международная, совместная конференция <a href="http://zfconf.org.ua/" target="_blank">ZFConf Ukraine</a> &amp; <a href="http://mageconf.com/" target="_blank">MageConf</a>. Цель конференции &#8211; объединить лучших специалистов PHP и Zend Framework Украины, России и других стран СНГ.</p>
<p>ZFConf Ukraine – первая в Украине конференция по Zend Framework, проводится в партнерстве с <a href="http://www.zfconf.ru/" target="_blank">ZFConf Russia</a> и сообществом <a href="http://zendframework.ru/" target="_blank">zendframework.ru</a>.  ZFConf Russia была первой конференцией по Zend Framework и прошла в  марте этого года в Санкт-Петербурге, Россия, собрав более 200 участников  из России, Беларуси, Украины, Литвы и других стран СНГ</p>
<p>Конференция MageConf впервые прошла в мае 2010 года в Киеве. Это была  первая конференция из серии PHP and Zend Framework в Украине. Ее  посетили более 150 специалистов.</p>
<p><span id="more-1745"></span></p>
<p>Конференция пройдет <strong>27 ноября</strong>, в Киеве<br />
Титульный спонсор конференции – компания <a href="http://www.magentocommerce.com/" target="_blank">Magento</a><br />
Место: КиевЭкспоПлаза, ул. Салютная 2б, 3 павильон<br />
Время: 27 ноября 2010 г. (с 11:00 до 19:00)<br />
Длительность: 1 полный день<br />
Формат: доклады в <strong>три потока</strong> и обсуждения на флипчарте (в перерывах)<br />
Язык докладов: русский<br />
Стоимость участия: <strong>бесплатно</strong><br />
Потоки: Zend Framework, PHP, Magento.</p>
<p>Аудитория: Разработчики ПО и специалисты по Project Management с  Украины, России и близлежащих стран СНГ. Ожидаемое количество участников  – 500 человек.</p>
<p><strong><a href="http://zfconf.org.ua/conf-2010/category/topics/" target="_blank">Доклады</a></strong></p>
<p><strong>1. Встречайте Zend Framework 2.0</strong><br />
Александр Веремьев / Zend Framework Core команда (<a href="http://www.zend.com/" target="_blank">Zend Technologies</a>)</p>
<p><strong>2. Эволюция ZF: архитектура, шаблоны, рефакторинг</strong><br />
Виктор Фараздаги / Component Maintainer и Contributor ZF 2.0 (4C)</p>
<p><strong>3. Юнит тестирование в Zend Framework 2.0</strong><br />
Ростислав Михайлив / Chief Developer / Software Architect (Gadu-Gadu)</p>
<p><strong>4. Хранение, обработка и отдача статики с использованием \Zend \File. Опыт социальной сети <a href="http://starlook.ru/" target="_blank">starlook.ru</a></strong><br />
Кирилл Мокевнин / Senior developer (undev)</p>
<p><strong>5. Чуть сложнее чем Singleton: аннотации, IOC, АОП</strong><br />
Кирилл Чебунин / Senior PHP Developer (Альпари)</p>
<p><strong>6. Doctrine 2</strong><br />
Валерий Рабиевский / Team leader (<a href="http://stfalcon.com/" target="_blank">stfalcon.com</a>)</p>
<p>Список еще будет обновляться, вы также можете подать заявку на  доклад, если вам есть чем поделиться поделиться с общественностью.   Также были бы рады услышать ваши комментарии по текущим темам.</p>
<p><strong><a href="http://zfconf.org.ua/registration/" target="_blank">Регистрация</a></strong><br />
Регистрируясь на одну конференцию, вы автоматически получаете доступ и на другую.</p>
<p>Если у вас есть предложения, или вы хотите быть спонсором, для связи с нами используйте <a href="http://zfconf.org.ua/contacts/" target="_blank">контакты</a></p>
<p>Регистрируйтесь и следите за обновлениями на <a href="http://zfconf.org.ua/" target="_blank">http://zfconf.org.ua</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tigor.com.ua/blog/2010/11/11/conference-zfconf-ukraine-mageconf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Инструменты обеспечение качества программного продукта для PHP</title>
		<link>http://tigor.com.ua/blog/2010/04/23/quality-assurance-in-php-projects-2/</link>
		<comments>http://tigor.com.ua/blog/2010/04/23/quality-assurance-in-php-projects-2/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 07:38:57 +0000</pubDate>
		<dc:creator>ingvar</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[QA]]></category>

		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=1617</guid>
		<description><![CDATA[В тексте статьи находится краткий обзор инструментов с помощью которых можно анализировать различные характиристики в приложениях созданных на PHP. Данный материал появился на свет в результате некоторых экспериментов в области непрерывной интеграции, и должен был являться частью статьи про непрерывную интеграцию (спойлерить пока не буду, боюсь сглазить) все в том же РНР, но я решил [...]]]></description>
			<content:encoded><![CDATA[<p>В тексте статьи находится  краткий обзор инструментов с помощью которых можно анализировать  различные характиристики в приложениях созданных на <a href="http://lurkmore.ru/PHP">PHP</a>. Данный материал появился на свет в  результате некоторых экспериментов в области непрерывной интеграции, и  должен был являться частью статьи про непрерывную интеграцию (спойлерить  пока не буду, боюсь сглазить) все в том же РНР, но я решил все-таки  выделить его в самостоятельный обзор, так как возможно, в последующих  статьях я буду ссылаться на него, а так же надеюсь узнать об аналогичных  инструментах еще не попавших мне на глаза. Некоторые инструменты уже  были рассмотрены достаточно подробно, но тем не менее полного списка  всех доступных еще не было.</p>
<p><span id="more-1617"></span></p>
<h6><strong>PHP_CodeCoverage</strong></h6>
<p>PHP_CodeCoverage это библиотека, которая обеспечивает сбор, обработку и  отображение информации о покрытии кода тестами, требует xdebug, а так  же использует некоторые сторонние библиотеки. Более подробная информация  находится на официальном сайте.</p>
<ul>
<li>Автор: <a href="http://sebastian-bergmann.de/">Sebastian Bergmann</a></li>
<li>Официальный сайт: <a href="http://github.com/sebastianbergmann/php-code-coverage">http://github.com/sebastianbergmann/php-code-coverage</a></li>
<li>Официальный PEAR канал: <a href="http://pear.phpunit.de/">http://pear.phpunit.de/</a></li>
<li>Текущая версия: 0.9.0 (alpha)</li>
</ul>
<h6><strong>PhpDocumentor</strong></h6>
<p>На основании комментариев в исходном коде генерирует соответствующую  документацию, имеет уйму возможностей в числе которых презентабельный и  дружественный к пользователю шаблоны.</p>
<ul>
<li>Автор: <a href="http://blog.joshuaeichorn.com/">Joshua Eichorn</a></li>
<li>Официальный сайт: <a href="http://www.phpdoc.org/">http://www.phpdoc.org/</a></li>
<li>Официальный PEAR канал: <a href="http://pear.php.net/">http://pear.php.net/</a></li>
</ul>
<h6><strong>PHP Copy/Paste Detector</strong> [phpcpd]</h6>
<p>Название говорит само за себя: находит дублированный код и сообщает о  нем.</p>
<ul>
<li>Автор: <a href="http://sebastian-bergmann.de/">Sebastian Bergmann</a></li>
<li>Официальный сайт: <a href="http://github.com/sebastianbergmann/phpcpd">http://github.com/sebastianbergmann/phpcpd</a></li>
<li>Официальный PEAR канал: <a href="http://pear.php.net/">http://pear.php.net/</a></li>
<li>Текущая версия: 1.3.1 (stable)</li>
</ul>
<h6><strong>PHP_Depend</strong></h6>
<p>Собирает и отображает статистическую информацию о проекте.</p>
<ul>
<li>Автор: <a href="http://manuel-pichler.de/">Manuel Pichler</a></li>
<li>Официальный сайт: <a href="http://pdepend.org/">http://pdepend.org/</a></li>
<li>Официальный PEAR канал: <a href="http://pear.pdepend.org/">http://pear.pdepend.org/</a></li>
<li>Текущая версия: 0.9.11 (beta)</li>
</ul>
<h6><strong>PHP_PMD</strong></h6>
<p>Ответвление от PHP_Depend: отображает информацию о размерах кода,  используемых именах, неиспользуемом коде. <a href="http://habrahabr.ru/blogs/php/90400/">Обзор</a> от <a href="http://devman.habrahabr.ru/">DevMan</a></p>
<ul>
<li>Автор: <a href="http://manuel-pichler.de/">Manuel Pichler</a></li>
<li>Официальный сайт: <a href="http://phpmd.org/">http://phpmd.org/</a></li>
<li>Официальный PEAR канал: <a href="http://pear.phpmd.org/">http://pear.phpmd.org/</a></li>
<li>Текущая версия: 0.2.5 (alpha)</li>
</ul>
<h6><strong>PHP_CodeSniffer</strong></h6>
<p>Позволяет наблюдать за состоянием PHP, Javascript и CSS файлов и  определять отклонения от принятых стандартов кодирования. <a href="http://habrahabr.ru/blogs/php/89192/">Обзор</a> от <a href="http://devman.habrahabr.ru/">DevMan</a></p>
<ul>
<li>Автор: <a href="http://gregsherwood.blogspot.com/">Greg Sherwood</a></li>
<li>Официальный сайт: <a href="http://matrix.squiz.net/developer/tools/php_cs">http://matrix.squiz.net/developer/tools/php_cs</a></li>
<li>Официальный PEAR канал: <a href="http://pear.php.net/">http://pear.php.net/</a></li>
<li>Текущая версия: 1.2.2 (stable)</li>
</ul>
<h6><strong>PHPUnit</strong></h6>
<p>Пожалуй самый известный инструмент для модульного тестирования, думаю в  представлении не нуждается.</p>
<ul>
<li>Автор: <a href="http://sebastian-bergmann.de/">Sebastian Bergmann</a></li>
<li>Официальный сайт: <a href="http://www.phpunit.de/">http://www.phpunit.de/</a></li>
<li>Официальный PEAR канал: <a href="http://pear.phpunit.de/">http://pear.phpunit.de/</a></li>
<li>Текущая версия: 3.4.12 (stable)</li>
</ul>
<h6><strong>PHP_CodeBrowser</strong></h6>
<p>Обеспечивает просмотр кода с синтаксической подсветкой, имеет богатые  возможности по визуализации, может использовать отчеты от: phpunit,  phpcpd, padawan, phpcs. Из <a href="http://blog.thinkphp.de/archives/464-PHP_CodeBrowser-Release-version-0.1.0.html">этого  обзора</a> можно понять насколько инструмент перспективный.</p>
<ul>
<li>Автор: <a href="http://www.mayflower.de/">Mayflower GmbH</a></li>
<li>Официальный сайт: <a href="http://github.com/mayflowergmbh/PHP_CodeBrowser">http://github.com/mayflowergmbh/PHP_CodeBrowser</a></li>
<li>Официальный PEAR канал: <a href="http://pear.phpunit.de/">http://pear.phpunit.de/</a></li>
<li>Текущая версия: 0.1.3 (alpha)</li>
</ul>
<h6><strong>phploc</strong></h6>
<p>Еще один инструмент собирающий статистическую информацию о проекте.</p>
<ul>
<li>Автор: <a href="http://sebastian-bergmann.de/">Sebastian Bergmann</a></li>
<li>Официальный сайт: <a href="http://github.com/sebastianbergmann/phploc">http://github.com/sebastianbergmann/phploc</a></li>
<li>Официальный PEAR канал: <a href="http://pear.phpunit.de/">http://pear.phpunit.de/</a></li>
<li>Текущая версия: 1.5.1 (stable)</li>
</ul>
<h6><strong>phpdcd</strong></h6>
<p>Детектор неиспользуемого кода (Dead Code Detector) для PHP. Он  сканирует PHP проект на предмет всех определенных функций и методов и  сообщает о них как о неиспользуемых если из вызов не встречается хотя бы  однажды</p>
<ul>
<li>Автор: <a href="http://sebastian-bergmann.de/">Sebastian Bergmann</a></li>
<li>Официальный сайт: <a href="http://github.com/sebastianbergmann/phpdcd">http://github.com/sebastianbergmann/phpdcd</a></li>
<li>Официальный PEAR канал: <a href="http://pear.phpunit.de/">pear.phpunit.de</a></li>
<li>Текущая версия: 0.9.2 (beta)</li>
</ul>
<h6><strong>Padawan</strong></h6>
<p>Инструмент для обнаружения антипаттернов, обходных путей и прочих  неприятностей.</p>
<ul>
<li>Автор: <a href="http://sebastian-bergmann.de/">Sebastian Bergmann</a></li>
<li>Официальный сайт: <a href="http://github.com/sebastianbergmann/padawan">http://github.com/sebastianbergmann/padawan</a></li>
<li>Официальный PEAR канал: неизвестен</li>
<li>Текущая версия: неизвестна</li>
</ul>
<h6><strong>PHP_CachegrindParser</strong></h6>
<p>Обработчик для cachegrind файлов создающий xml отчеты для последующего  использования в CI.</p>
<ul>
<li>Автор: <a href="http://www.mayflower.de/">Mayflower GmbH</a></li>
<li>Официальный сайт: <a href="http://github.com/mayflowergmbh/PHP_CachegrindParser">http://github.com/mayflowergmbh/PHP_CachegrindParser</a></li>
<li>Официальный PEAR канал: неизвестен</li>
<li>Текущая версия: неизвестна</li>
</ul>
<p><strong>Источник статьи</strong><br />
<a href="http://habrahabr.ru/blogs/php/91777/">Хабрахабр: PHP &#8211; Обеспечение качества программного продукта</a></p>
<p><strong>Что ещё можно почитать:</strong><br />
<a href="http://sebastian-bergmann.de/software/">http://sebastian-bergmann.de/software/</a><br />
<a href="http://manuel-pichler.de/">http://manuel-pichler.de/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tigor.com.ua/blog/2010/04/23/quality-assurance-in-php-projects-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ZfConf 2010 &#8211; первая в России конференция по Zend Framework</title>
		<link>http://tigor.com.ua/blog/2010/02/01/zfconf/</link>
		<comments>http://tigor.com.ua/blog/2010/02/01/zfconf/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 09:19:21 +0000</pubDate>
		<dc:creator>ingvar</dc:creator>
				<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend framework]]></category>
		<category><![CDATA[zfconf]]></category>

		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=1440</guid>
		<description><![CDATA[В конце этого марта в Санкт-Петербурге пройдет первая в России конференция по Zend Framework. На днях закончился прием тезисов по планируемым докладам. В состав докладчиков вошли ведущие участники русскоязычного сообщества ZF, опытнейшие специалисты и лично один из создателей Zend Framework. На данный момент уже открыта предварительная регистрация на конференцию. Для решения ряда вопросов организаторам очень [...]]]></description>
			<content:encoded><![CDATA[<p>В конце этого марта в Санкт-Петербурге пройдет первая в России <a href="http://www.zfconf.ru/"><strong>конференция по Zend Framework</strong></a>. На днях закончился прием тезисов по планируемым докладам. В состав докладчиков вошли ведущие участники русскоязычного сообщества ZF, опытнейшие специалисты и лично один из создателей Zend Framework.</p>
<p>На данный момент уже открыта <a href="http://www.zfconf.ru/pre-registration.php">предварительная регистрация</a> на конференцию. Для решения ряда вопросов организаторам очень важно сейчас понять приблизительное количество человек, которые смогут посетить конференцию или принять участие в ней.</p>
<p>Каждый предстоящий доклад возможно обсудить на форуме ZF-сообщества. Ваше мнение очень важно для авторов!</p>
<p><span id="more-1440"></span></p>
<p>Планируемые <a href="http://zendframework.ru/forum/index.php?board=32.0">доклады</a>:</p>
<ul>
<li> Жизненный цикл предложений (proposals) в проекте Zend Framework (Александр Веремьев, Zend Technologies)</li>
<li>Zend_Search_Lucene в деталях (Александр Веремьев, Zend Technologies)</li>
<li>Zend Framework и производительность (Александр Махомет, ZendFramework.ru)</li>
<li>Zend Framework и MVC, «толстая» модель (Александр Стешенко, Norada Corporation)</li>
<li>ФотоСтрана.ru: Прототипирование с использованием ZF (Леонид Жаворонков, ФотоСтрана.ru)</li>
<li>Использование очередей сообщений в повседневных проектах (Денис Баклыков, Обновление)</li>
<li>Zend Framework и Doctrine (Степан Танасийчук, stfalcon.com)</li>
<li>Zend Framework и мультиязычность (Степан Танасийчук, stfalcon.com)</li>
<li>История проекта e-Штаб (Анатолий Ларин, e-Легион)</li>
<li>Что нового несет нам Zend Framework 2.0? (Надежда Блинова, Георгий Туревич, Wizartech)</li>
<li>Интеграция Zend Framework c Javascript-фрэймворками jQuery и Dojo Toolkit (Георгий Туревич, Wizartech)</li>
</ul>
<p>Смело обсуждайте доклады и регистрируйтесь!</p>
<p>За последними новостями можно следить здесь:<br />
RSS-канал: <a href="http://feeds.feedburner.com/zfconf">feeds.feedburner.com/zfconf</a><br />
Twitter: <a href="http://twitter.com/zfconf">@zfconf</a><br />
Группа Вконтакте: <a href="http://vkontakte.ru/club14951507">vkontakte.ru/club14951507</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tigor.com.ua/blog/2010/02/01/zfconf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XHprof: производительность популярных PHP фреймворков</title>
		<link>http://tigor.com.ua/blog/2009/12/17/xhprof-php-framework-performance-comparision/</link>
		<comments>http://tigor.com.ua/blog/2009/12/17/xhprof-php-framework-performance-comparision/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 21:44:08 +0000</pubDate>
		<dc:creator>ingvar</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[highload]]></category>
		<category><![CDATA[xhprof]]></category>

		<guid isPermaLink="false">http://tigor.com.ua/blog/?p=1363</guid>
		<description><![CDATA[В первом посте про XHProf: XHProf – профайлер PHP от Facebook, рассказывалось, что это за инструмент, как его установить, настроить и использовать. Решил провести небольшой тест производительности популярных фреймворков, используя данные XHProf. Цель теста &#8211; посмотреть, какие данные получим по таким показателям, как: Wall Time (a.k.a. Elapsed time or wall clock time) CPU (CPU time [...]]]></description>
			<content:encoded><![CDATA[<p>В первом посте про XHProf: <a href="http://tigor.com.ua/blog/2009/12/13/profiling-php-with-xhprof/">XHProf – профайлер PHP от Facebook</a>, рассказывалось, что это за инструмент, как его установить, настроить и использовать. Решил провести небольшой тест производительности популярных фреймворков, используя данные XHProf.</p>
<p><strong>Цель теста &#8211; посмотреть, какие данные получим по таким показателям, как:</strong></p>
<ul>
<li>Wall Time (a.k.a. Elapsed time or wall clock time)</li>
<li>CPU (CPU time in user space + CPU time in kernel space)</li>
<li>MemUse (Memory usage)</li>
<li>PeakMemUse (Peak memory usage)</li>
<li>Number of Function Calls</li>
</ul>
<p><span id="more-1363"></span></p>
<h3><strong>Какие фреймворки протестировали?</strong></h3>
<ul>
<li>Yii 1.0.11</li>
<li>Yii 1.1.rc</li>
<li><a href="http://www.yiiframework.com/doc/guide/ru/topics.performance#---------------------------x-9x">Yiilite</a> 1.0.11 / 1.1.rc (Bootstrap файл, где собраны вместе часто используемые классы. Плюс все комментарии и выражения трассировки вырезаются)</li>
<li>Symfony 1.2.11</li>
<li>Symfony 1.4.2</li>
<li>Zend Framework 1.9.6</li>
<li>DooPHP 1.2</li>
<li>Codeigniter 1.7.2</li>
<li>Kohana 2.3.4</li>
<li>Kohana 3.0.3</li>
<li>Cakephp 1.2.5 (тормозил больше всех, видно в 1.3.0 починили)</li>
<li>Cakephp 1.3.0 alpha</li>
<li>Recess 0.20 (был взят ради спортивного интереса, т.к. позиционирует себя как: Easy, Reliable, Fast, Extensible)</li>
</ul>
<p>Почему именно эти PHP фреймворки? Эти проекты интересные, популярные <img src='http://tigor.com.ua/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  и все ещё развиваются.</p>
<h3><strong>Как проводилось тестирование?</strong></h3>
<p>Для получения результатов выполнялось около 10 выборок по каждому фреймворку. И в качестве данных использовались<br />
лучшие результаты с наименьшими задержками времени. </p>
<p><strong>Условия тестирования</strong></p>
<ul>
<li>Операционная система: FreeBSD 8.0</li>
<li>Web сервер: Apache httpd 2.2.13</li>
<li>PHP 5.2.11 + APC + XHProf + много других модулей</li>
<li>CPU: VIA C7 1500MHz</li>
<li>Оперативная память: 1GB</li>
<li>Винчестер: 250 GB 5400 RPM 8MB SATA</li>
</ul>
<p><strong>Режимы тестирования</strong></p>
<ol>
<li>Выключенный APC</li>
<li>С включенным APC (apc.stat = 1)</li>
<li>С включенным APC (apc.stat = 0)</li>
</ol>
<blockquote><p>
<strong>&laquo;apc.stat = 1&#8243;</strong> &#8211; штатный режим APC, проверяется дата модификации файла, и если она изменилась, то кеш для файлов обновляется. В случае, если <strong>&laquo;apc.stat = 0&#8243;</strong>, то проверка не проводится, что положительно влияет на производительность. НО в этом случае, пока не сбросите кеш вручную, данные не обновятся.
</p></blockquote>
<p><strong>Тестируемые приложения</strong></p>
<p>Для каждого фреймворка было написано свое приложение. Каждое приложение выводит строку &laquo;Hello world!&raquo;. Все настройки фреймворков использовались по умолчанию. За основу была взята идея <a href="http://code.google.com/p/phpmark/">phpmark</a>.</p>
<h3><strong>Результат #1. APC выключен</strong></h3>
<p><img src="http://tigor.com.ua/blog/wp-content/uploads/2009/12/1_xhprof_without_apc.png" alt="1_xhprof_without_apc" title="1_xhprof_without_apc" width="725" height="400" class="alignnone size-full wp-image-1405" /></p>
<p>Yiilite не рекомендуется использовать без кеширования байткода (APC, XCache, eAccelerator), что собственно и видно по результатам теста.<br />
<br/></p>
<h3><strong>Результат #2. APC включен (apc.stat = 1)</strong></h3>
<p><img src="http://tigor.com.ua/blog/wp-content/uploads/2009/12/2_xhprof_with_apc.png" alt="2_xhprof_with_apc" title="2_xhprof_with_apc" width="725" height="400" class="alignnone size-full wp-image-1407" /></p>
<p>А тут наоборот, Yiilite отрабатывает быстрее, но потребляет больше памяти.<br />
<br/></p>
<h3><strong>Результат #3. APC включен (apc.stat = 0)</strong></h3>
<p><img src="http://tigor.com.ua/blog/wp-content/uploads/2009/12/3_xhprof_with_apc_stat_eq_0.png" alt="3_xhprof_with_apc_stat_eq_0" title="3_xhprof_with_apc_stat_eq_0" width="725" height="400" class="alignnone size-full wp-image-1408" /></p>
<p>Очень интересные цифры получаются. Например, Wall Time (ms) у Zend Framework 1.9.6 уменьшилось практически на 50%, для других на 5-30 мс. Но режим этот не всем подойдет, и к тому же тут свои нюансы, связанные с очищением кеша.<br />
<br/></p>
<h3><strong>Сравниваем результаты &laquo;Wall Time (ms)&raquo; для всех режимов</strong></h3>
<p><img src="http://tigor.com.ua/blog/wp-content/uploads/2009/12/4_xhprof_wall_time_comparison.png" alt="4_xhprof_wall_time_comparison" title="4_xhprof_wall_time_comparison" width="680" height="400" class="alignnone size-full wp-image-1413" /></p>
<p><img src="http://tigor.com.ua/blog/wp-content/uploads/2009/12/5_xhprof_wall_time_comparison_graph_2.png" alt="5_xhprof_wall_time_comparison_graph_2" title="5_xhprof_wall_time_comparison_graph_2" width="968" height="701" class="alignnone size-full wp-image-1414" /></p>
<p>Как можно убедиться, использование APC очень положительно сказывается на производительсности, время загрузки страницы увеличивается в разы для некоторых фреймворков.<br />
<br/></p>
<h3><strong>Сравниваем результаты &laquo;MemUse (kb)&raquo; для всех режимов</strong></h3>
<p><img src="http://tigor.com.ua/blog/wp-content/uploads/2009/12/6_xhprof_mem_use_comparison_graph.png" alt="6_xhprof_mem_use_comparison_graph" title="6_xhprof_mem_use_comparison_graph" width="952" height="640" class="alignnone size-full wp-image-1415" /></p>
<p>Тут видно положительный эффект от использование APC &#8211; потребления памяти уменьшается в раза 2-3.<br />
<br/></p>
<h3><strong>Update &#8211; Yii with View</strong></h3>
<p>Для Yii было заменено приложение, чтобы задействовать View. Все графики обновлены. Если сравнивать с предыдущими значениями Yii, то новые увеличились на 5-10 мс.</p>
<h3><strong>Выводы</strong></h3>
<p>Вот так с помощью XHProf стало видно, кто у нас тяжеловес из PHP фреймворков <img src='http://tigor.com.ua/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . О чем это свидетельствует? Да ровным счетом ничего &#8211; это всего лишь &laquo;Hello World!&raquo; да и железка слабовата&#8230; <img src='http://tigor.com.ua/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Если взять реальный сайт с БД, его сложной бизнес логикой, то цифры будут совсем другие.</p>
<p>Я в своей работе использую Symfony 1.2.11. Да, он тяжеловат, но его плюсы перекрывают все его минусы, по моему мнению. К тому же, если взять нормальный сервачок (Opteron X2 2.2 GHz, 8 GB + хорошие веники) вместо VIA C7 1500MHz, то тот же самый &laquo;Hello World!&raquo; вместо 177 мс загрузится на Opteron за 23 мс, а реальный сайт &#8211; 146 мс. Вот так! Но это уже другая история.</p>
<p>А вот Yii Framework нахожу очень интересным и серьезным проектом. Осталось его испытать в боевых условиях.</p>
<h3><strong>Ссылке по теме</strong></h3>
<ul>
<li><a href="http://mirror.facebook.net/facebook/xhprof/doc.html">XHProf Documentation</a></li>
<li><a href="http://tigor.com.ua/blog/2009/12/13/profiling-php-with-xhprof/ ">XHProf – профайлер PHP от Facebook</a></li>
<li><a href="http://tigor.com.ua/blog/2009/06/10/php-frameworks/">Список современных PHP-фреймворков – смотрим и выбираем</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tigor.com.ua/blog/2009/12/17/xhprof-php-framework-performance-comparision/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>XHprof &#8211; профайлер PHP от Facebook</title>
		<link>http://tigor.com.ua/blog/2009/12/13/profiling-php-with-xhprof/</link>
		<comments>http://tigor.com.ua/blog/2009/12/13/profiling-php-with-xhprof/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 15:32:05 +0000</pubDate>
		<dc:creator>ingvar</dc:creator>
				<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[Профилирование кода позволяет выявить медленные участки в коде, что позволит в случае необходимости устранить их. Новый PHP профайлер XHprof от компании Facebook &#8211; это альтернатива Xdebug (PHP профайлер Xdebug). XHprof был разработан специально для Facebook и начиная с март 2009 года его исходный код стал доступен для скачивания. Как работает XHprof? XHProf работает по принципу [...]]]></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">
[xhprof]
extension=xhprof.so
xhprof.output_dir=&quot;/var/tmp/xhprof&quot;
</pre>
<p>Для папки <strong>&laquo;/var/tmp/xhprof&raquo;</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[] = $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 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" /></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 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" /></p>
<p>Графический отчет позволяет визуально оценить ресурсоемкость каждой функции (красный должен привлечь внимание!). Как видим, в  примере самой затратной функцией для ресурсов стала in_array(), которая сама по себе не является проблемой но говорит о плохом техническом решении.</p>
<h3><strong>Профилирование production проектов</strong></h3>
<p>XHprof позволяет профилировать не только отдельные участки кода но и production проекты. Т.к. профилирование проектов в среде production процесс ресурсоемкий, то главный тут критерий &#8211; производительность. И XHprof тут прекрасно справляется, т.к. создан он был именно для таких целей. Во-первых XHprof написан на C, во-вторых имеет ряд настроек:</p>
<p>&bull; Таймер CPU на Linux системах имеет большой оверхед, поэтому разработчики рекомендуют использовать профайлер в режиме &laquo;elapsed time + memory&raquo;:</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 находится в &laquo;/usr/local/share/php/xhprof_lib&raquo;.</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['SERVER_NAME'] . '/xhprof/index.php?run=%s&amp;source=%s', $run_id, $profiler_namespace);

  // Можем сделать защиту по айпи, или добавить $_GET параметр
  if (in_array($_SERVER['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>Загружаем страницу сайта. Внизу страницы появляется ссылка &laquo;Profiler output&raquo;, которая ведет на GUI XHprof с уникальными идентификатором отчета. Каждый раз, когда мы обновляем страницу отчет перегенирируется и идентификатор изменится.</p>
<p>Получаем отчет:</p>
<p><img 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" /></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>
]]></content:encoded>
			<wfw:commentRss>http://tigor.com.ua/blog/2009/12/13/profiling-php-with-xhprof/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

