<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://blog.sjinks.pro/wp-atom.php">
	<title type="text">Ars Longa, Vita Brevis</title>
	<subtitle type="text">Verba volant, scripta manent</subtitle>

	<updated>2010-03-12T11:20:25Z</updated>

	<link rel="alternate" type="text/html" href="http://blog.sjinks.pro" />
	<id>http://blog.sjinks.pro/feed/atom/</id>
	

	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/sjblog" /><feedburner:info uri="sjblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>44.60000</geo:lat><geo:long>33.53333</geo:long><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><feedburner:emailServiceId>sjblog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/sjblog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://my.feedlounge.com/external/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://static.feedlounge.com/buttons/subscribe_0.gif">Subscribe with FeedLounge</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="https://intouch.particls.com/download/?mode=2&amp;feed=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="https://intouch.particls.com/resources/buttons/it-button2.gif">Subscribe with Particls</feedburner:feedFlare><feedburner:feedFlare href="http://www.addtoany.com/?linkname=Ars%20Longa%2C%20Vita%20Brevis&amp;linkurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><feedburner:feedFlare href="http://www.fwicki.com/users/default.aspx?addfeed=http%3A%2F%2Ffeeds.feedburner.com%2Fsjblog" src="http://www.fwicki.com/images/ui/fwicki_clicklet.png">Subscribe with fwicki</feedburner:feedFlare><entry>
		<author>
			<name>Vladimir</name>
						<uri>http://blog.sjinks.pro/</uri>
					</author>
		<title type="html"><![CDATA[Сбой OpenJDK при использовании Eclipse в Ubuntu Lucid Lynx]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sjblog/~3/N2eSPx8bxsw/" />
		<id>http://blog.sjinks.pro/?p=777</id>
		<updated>2010-03-09T09:05:19Z</updated>
		<published>2010-03-09T08:02:07Z</published>
		<category scheme="http://blog.sjinks.pro" term="Linux" /><category scheme="http://blog.sjinks.pro" term="Eclipse" /><category scheme="http://blog.sjinks.pro" term="Lucid Lynx" /><category scheme="http://blog.sjinks.pro" term="OpenJDK" /><category scheme="http://blog.sjinks.pro" term="Ubuntu" /><category scheme="http://blog.sjinks.pro" term="ошибка" />		<summary type="html"><![CDATA[Симптом: Eclipse молча погибает при редактировании файла, в /var/log/kern.log появляется подобное сообщение об ошибке:
Mar  9 09:11:44 sjinks kernel: [350411.627132] java[19570] trap int3 ip:7ff3fbd74302 sp:7ff42741b030 error:0
Ключевые слова: java trap int3. Если они есть в логе, с большой вероятностью вы читаете про ту самую ошибку  
Багтрекер Eclipse сообщает, что сбой возникает из-за ошибки в XULRunner 1.9.1.
Есть [...]<hr/>
<p>© 2008–2010 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>

<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a
href="http://blog.sjinks.pro/linux/777-openjdk-crashes-when-using-eclipse-in-ubuntu-lucid/">источник</a> <strong>обязательно</strong>.</p>]]></summary>
		<content type="html" xml:base="http://blog.sjinks.pro/linux/777-openjdk-crashes-when-using-eclipse-in-ubuntu-lucid/">&lt;p&gt;Симптом: Eclipse молча погибает при редактировании файла, в &lt;code&gt;/var/log/kern.log&lt;/code&gt; появляется подобное сообщение об ошибке:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p7774"&gt;
        &lt;div class="code text" id="p777code4"&gt;
Mar &amp;nbsp;9 09:11:44 sjinks kernel: [350411.627132] java[19570] trap int3 ip:7ff3fbd74302 sp:7ff42741b030 error:0
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Ключевые слова: &lt;strong&gt;java trap int3&lt;/strong&gt;. Если они есть в логе, с большой вероятностью вы читаете про ту самую ошибку &lt;img src='http://blog.sjinks.pro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /&gt; &lt;span id="more-777"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Багтрекер Eclipse &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=303372"&gt;сообщает&lt;/a&gt;, что сбой возникает из-за &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=522635"&gt;ошибки&lt;/a&gt; в XULRunner 1.9.1.&lt;/p&gt;
&lt;p&gt;Есть два решения проблемы:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Поставить XULRunner 1.9.2 из mozilla-daily ppa и добавить &lt;code&gt;-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner-1.9.2.1pre&lt;/code&gt; в &lt;code&gt;eclipse.ini&lt;/code&gt; (после &lt;code&gt;-vmargs&lt;/code&gt;). После данной операции &lt;code&gt;eclipse.ini&lt;/code&gt; будет выглядеть примерно так:
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p7775"&gt;
        &lt;div class="code text" id="p777code5"&gt;
-startup&lt;br /&gt;
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar&lt;br /&gt;
--launcher.library&lt;br /&gt;
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.0.200.v20090519&lt;br /&gt;
-product&lt;br /&gt;
org.eclipse.epp.package.cpp.product&lt;br /&gt;
-showsplash&lt;br /&gt;
org.eclipse.platform&lt;br /&gt;
--launcher.XXMaxPermSize&lt;br /&gt;
256m&lt;br /&gt;
-vmargs&lt;br /&gt;
-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner-1.9.2.1pre&lt;br /&gt;
-Dosgi.requiredJavaVersion=1.5&lt;br /&gt;
-XX:MaxPermSize=256m&lt;br /&gt;
-Xms40m&lt;br /&gt;
-Xmx256m
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Второй вариант проще: перед запуском Eclipse установить переменную окружения &lt;code&gt;GRE_PATH&lt;/code&gt; в абсолютно левый путь &lt;img src='http://blog.sjinks.pro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /&gt;&lt;br /&gt;
Например, у меня Eclipse запускается так:
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p7776"&gt;
        &lt;div class="code bash" id="p777code6"&gt;
&lt;span class="kw3"&gt;export&lt;/span&gt; &lt;span class="re2"&gt;GDK_NATIVE_WINDOWS&lt;/span&gt;=&lt;span class="kw2"&gt;true&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw3"&gt;export&lt;/span&gt; &lt;span class="re2"&gt;GRE_PATH&lt;/span&gt;=&lt;span class="sy0"&gt;/&lt;/span&gt;tmp&lt;span class="sy0"&gt;/&lt;/span&gt;aaaaaaaaaaaa&lt;br /&gt;
&lt;span class="sy0"&gt;/&lt;/span&gt;opt&lt;span class="sy0"&gt;/&lt;/span&gt;eclipse&lt;span class="sy0"&gt;/&lt;/span&gt;eclipse
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;После выполнения любой из двух операций всё работает просто замечательно.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;© 2008–2010 &lt;a href="http://blog.sjinks.pro"&gt;Ars Longa, Vita Brevis&lt;/a&gt;. Все права защищены. Перепубликация материалов без разрешения автора запрещена.&lt;/p&gt;

&lt;p&gt;При использовании материалов блога наличие активной не закрытой от индексирования ссылки на &lt;a
href="http://blog.sjinks.pro/linux/777-openjdk-crashes-when-using-eclipse-in-ubuntu-lucid/"&gt;источник&lt;/a&gt; &lt;strong&gt;обязательно&lt;/strong&gt;.&lt;/p&gt;
	&lt;h4&gt;Связанные записи&lt;/h4&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/linux/764-update-initramfs-error-cannot-stat/" title="cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога (Февраль 10, 2010)"&gt;cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога&lt;/a&gt; (1)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/linux/753-love-linux/" title="Люблю Linux (Февраль 1, 2010)"&gt;Люблю Linux&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/linux/230-eclipse-on-ubuntu-linux-for-64-bit-architecture/" title="Запускаем Eclipse на Ubuntu Linux на 64-битной архитектуре (Июль 12, 2008)"&gt;Запускаем Eclipse на Ubuntu Linux на 64-битной архитектуре&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/linux/614-bringing-skype-back-in-ubuntu-karmic-koala-64-bit/" title="Возвращаем Skype к жизни в Ubuntu Karmic Koala на 64-битной платформе (Август 10, 2009)"&gt;Возвращаем Skype к жизни в Ubuntu Karmic Koala на 64-битной платформе&lt;/a&gt; (2)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/linux/345-bringing-skype-back-in-ubuntu-intrepid-ibex-64-bit/" title="Возвращаем Skype к жизни в Ubuntu Intrepid Ibex на 64-битной платформе (Сентябрь 26, 2008)"&gt;Возвращаем Skype к жизни в Ubuntu Intrepid Ibex на 64-битной платформе&lt;/a&gt; (15)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T3XJs4rUXcTLH-wNC44n4n6z8gc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T3XJs4rUXcTLH-wNC44n4n6z8gc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T3XJs4rUXcTLH-wNC44n4n6z8gc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T3XJs4rUXcTLH-wNC44n4n6z8gc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=N2eSPx8bxsw:WQf5qqRrszQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=N2eSPx8bxsw:WQf5qqRrszQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=N2eSPx8bxsw:WQf5qqRrszQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=N2eSPx8bxsw:WQf5qqRrszQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=N2eSPx8bxsw:WQf5qqRrszQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=N2eSPx8bxsw:WQf5qqRrszQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=N2eSPx8bxsw:WQf5qqRrszQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=N2eSPx8bxsw:WQf5qqRrszQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=N2eSPx8bxsw:WQf5qqRrszQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=N2eSPx8bxsw:WQf5qqRrszQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=N2eSPx8bxsw:WQf5qqRrszQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=N2eSPx8bxsw:WQf5qqRrszQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=N2eSPx8bxsw:WQf5qqRrszQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=N2eSPx8bxsw:WQf5qqRrszQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sjblog/~4/N2eSPx8bxsw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.sjinks.pro/linux/777-openjdk-crashes-when-using-eclipse-in-ubuntu-lucid/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.sjinks.pro/linux/777-openjdk-crashes-when-using-eclipse-in-ubuntu-lucid/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.sjinks.pro/linux/777-openjdk-crashes-when-using-eclipse-in-ubuntu-lucid/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Vladimir</name>
						<uri>http://blog.sjinks.pro/</uri>
					</author>
		<title type="html"><![CDATA[SJ Object Cache: еще более быстрое объектное кэширование для WordPress]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sjblog/~3/vG7k9Sn4-gM/" />
		<id>http://blog.sjinks.pro/?p=776</id>
		<updated>2010-03-12T11:20:25Z</updated>
		<published>2010-03-08T03:01:35Z</published>
		<category scheme="http://blog.sjinks.pro" term="Плагины WordPress" /><category scheme="http://blog.sjinks.pro" term="APC" /><category scheme="http://blog.sjinks.pro" term="eAccelerator" /><category scheme="http://blog.sjinks.pro" term="SJ Object Cache" /><category scheme="http://blog.sjinks.pro" term="WordPress" /><category scheme="http://blog.sjinks.pro" term="WP File Cache" /><category scheme="http://blog.sjinks.pro" term="xCache" /><category scheme="http://blog.sjinks.pro" term="кэш" /><category scheme="http://blog.sjinks.pro" term="плагин" />		<summary type="html"><![CDATA[После года тестирования наконец-то вышла первая стабильная версия плагина SJ Object Cache.
SJ Object Cache — альтернатива плагину WP File Cache, поддерживающая APC, eAccelerator, xCache, Zend Disk Cache и Zend Shared Memory Cache.
В отличие от WP File Cache, SJ Object Cache ориентирован на VPS/VDS и выделенные сервера.

Одним из недостатков WP File Cache является то, что он смещает нагрузку [...]<hr/>
<p>© 2008–2010 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>

<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a
href="http://blog.sjinks.pro/wordpress/plugins/776-sj-object-cache-faster-object-cache-for-wordpress/">источник</a> <strong>обязательно</strong>.</p>]]></summary>
		<content type="html" xml:base="http://blog.sjinks.pro/wordpress/plugins/776-sj-object-cache-faster-object-cache-for-wordpress/">&lt;p&gt;После года тестирования наконец-то вышла первая стабильная версия плагина SJ Object Cache.&lt;/p&gt;
&lt;p&gt;SJ Object Cache — альтернатива плагину WP File Cache, поддерживающая APC, eAccelerator, xCache, Zend Disk Cache и Zend Shared Memory Cache.&lt;br /&gt;
&lt;strong&gt;В отличие от WP File Cache, SJ Object Cache ориентирован на VPS/VDS и выделенные сервера.&lt;/strong&gt;&lt;br /&gt;
&lt;span id="more-776"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Одним из недостатков WP File Cache является то, что он смещает нагрузку с базы данных на файловую систему. Хотя это может быть не сильно критично для &lt;em&gt;хорошего&lt;/em&gt; shared-хостинга, на виртуальных серверах и серверах со слабой дисковой подсистемой это может быть критично (виртуализация очень часто негативно сказывается на скорости ввода/вывода, в результате процессор может проводить много времени в ожидании окончания ввода/вывода). Вдобавок ко всему при включённом &lt;code&gt;open_basedir&lt;/code&gt; файловые операции осуществляются медленнее из-за лишних проверок (привет всем, использующим Plesk).&lt;/p&gt;
&lt;p&gt;Решением данной проблемы является использование разделяемой памяти (shared memory). Так как многие администраторы для повышения производительности ставят на выделенных серверах акселераторы (APC, xCache, eAccelerator), SJ Object Cache использует их интерфейс (API) для работы с выделенной памятью.&lt;/p&gt;
&lt;h3&gt;Функциональность SJ Object Cache&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;реализация долговременного кэширования на уровне запросов;&lt;/li&gt;
&lt;li&gt;возможность отключения кэширования (в том числе и встроенного в &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;WordPress&lt;/a&gt;);&lt;/li&gt;
&lt;li&gt;возможность отключения межсессионного кэширования;&lt;/li&gt;
&lt;li&gt;полная совместимость с интерфейсом класса WP_Object_Cache &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;WordPress&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;использование памяти под сессионный &lt;a href="http://blog.sjinks.pro/tag/cache/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  кэш"&gt;кэш&lt;/a&gt; для увеличения производительности;&lt;/li&gt;
&lt;li&gt;сессионное кэширование часто изменяющихся объектов;&lt;/li&gt;
&lt;li&gt;возможность задания групп, не подлежащих межсессионному кэшированию (может быть полезно для &lt;a href="http://wordpress.org/support/topic/364580?replies=3"&gt;обеспечения совместимости со сторонними плагинами&lt;/a&gt;);&lt;/li&gt;
&lt;li&gt;модульная архитектура, позволяющая добавлять новые кэширующие движки;&lt;/li&gt;
&lt;li&gt;хранение настроек в коде плагина.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Кэширующие движки&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Base Cache — аналог объектного кэша &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;WordPress&lt;/a&gt; без возможности сохранения данных между сессиями; по тестам показывает чуть большую производительность, чем встроенный в &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;WordPress&lt;/a&gt; &lt;a href="http://blog.sjinks.pro/tag/cache/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  кэш"&gt;кэш&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ua2.php.net/manual/en/book.apc.php"&gt;Alternative PHP Cache&lt;/a&gt; (APC);&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.eaccelerator.net/"&gt;eAccelerator&lt;/a&gt; (&lt;strong&gt;внимание:&lt;/strong&gt; eAccelerator 0.9.6 не поддерживается, так как из него &lt;a href="http://www.eaccelerator.net/wiki/Release-0.9.6"&gt;убрали&lt;/a&gt; функции кэширования пользовательских данных);&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xcache.lighttpd.net/"&gt;xCache&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Zend Disk/Shared Memory Cache (&lt;strong&gt;данный движок не тестировался, но работать должен&lt;/strong&gt;);&lt;/li&gt;
&lt;li&gt;File Cache — модифицированная версия движка WP File Cache;&lt;/li&gt;
&lt;li&gt;File Group Cache — модифицированная версия File Cache, оптимизированная под слабую дисковую подсистему (при доступе к кэшу читается сразу вся группа, что приводит к минимизации числа обращений к диску и увеличению объема потребляемой памяти).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Замечания по установке&lt;/h3&gt;
&lt;p&gt;Плагину при активации/сохранении настроек должен быть доступен на запись каталог &lt;code&gt;wp-content&lt;/code&gt;: в него копируется файл &lt;code&gt;object-cache.&lt;a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP"&gt;php&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;В настройках акселератора (APC, eAccelerator, xCache) нужно отвести достаточно места под пользовательский &lt;a href="http://blog.sjinks.pro/tag/cache/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  кэш"&gt;кэш&lt;/a&gt;. &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;WordPress&lt;/a&gt; весьма прожорлив!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Настройки, контролирующие размер кэша APC:&lt;/strong&gt; &lt;a href="http://ua2.php.net/manual/en/apc.configuration.php#ini.apc.shm-segments"&gt;&lt;code&gt;apc.shm_segments&lt;/code&gt;&lt;/a&gt;, &lt;a href="http://ua2.php.net/manual/en/apc.configuration.php#ini.apc.shm-size"&gt;apc.shm_size&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Настройки, контролирующие размер кэша xCache:&lt;/strong&gt; &lt;a href="http://xcache.lighttpd.net/wiki/XcacheIni"&gt;&lt;code&gt;xcache.var_size&lt;/code&gt;&lt;/a&gt;. xCache — единственный из трёх рассматриваемых акселераторов, имеющий раздельные кэши для опкода и пользовательских данных.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Настройки, контролирующие размер кэша eAccelerator:&lt;/strong&gt; &lt;a href="http://www.eaccelerator.net/wiki/Settings"&gt;&lt;code&gt;eaccelerator.shm_size&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Для APC и eAccelerator размер кэша должен учитывать &lt;a href="http://blog.sjinks.pro/tag/cache/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  кэш"&gt;кэш&lt;/a&gt; опкода. По скромным подсчётам, &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;WordPress&lt;/a&gt; 2.9.2 без плагинов (&lt;a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP"&gt;PHP&lt;/a&gt; 5.1.22, amd-64) занимает порядка десяти мегабайт. Для настройки размера кэша очень рекомендую воспользоваться утилитами, входящими в дистрибутив акселератора: они позволяют оценить объем занятой памяти, фрагментации кэша и просматривать различную статистику. Если с первого раза оптимальный размер кэша подобрать не удаётся, это нормально &lt;img src='http://blog.sjinks.pro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;На данном сервере (пять разных &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;WordPress&lt;/a&gt; с разным наборов плагинов (SJ Object Cache настроен на трёх из них), два Simple Forum, куча всего по мелочи, &lt;a href="http://blog.sjinks.pro/tag/cache/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  кэш"&gt;кэш&lt;/a&gt; eAccelerator для хранения сессий) размер кэша колеблется в пределах 128–192 мегабайт. Север выдерживает больше тысячи одновременных посетителей, порядка 100,000 посетителей в сутки и генерирует в среднем 64 гигабайта трафика в сутки — и это безо всяких страничных кэшей типа WP Super Cache, Hyper Cache, W3 Total Cache, MaxSite Cache и т.п. Не без напильника, но тем не менее.&lt;/p&gt;
&lt;h3&gt;Удаление/деактивация плагина&lt;/h3&gt;
&lt;p&gt;Для успешной деактивации каталог &lt;code&gt;wp-content&lt;/code&gt; должен быть доступен на запись — требуется удаление файла &lt;code&gt;wp-content/object-cache.&lt;a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP"&gt;php&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://d.sjinks.pro/wordpress/sj-object-cache-1.0.zip"&gt;Скачать SJ Object Cache 1.0&lt;/a&gt;.&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a href="http://d.sjinks.pro/wordpress/sj-object-cache-1.1.zip"&gt;Экспериментальная версия SJ Object Cache 1.1 с поддержкой WordPress MU&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;© 2008–2010 &lt;a href="http://blog.sjinks.pro"&gt;Ars Longa, Vita Brevis&lt;/a&gt;. Все права защищены. Перепубликация материалов без разрешения автора запрещена.&lt;/p&gt;

&lt;p&gt;При использовании материалов блога наличие активной не закрытой от индексирования ссылки на &lt;a
href="http://blog.sjinks.pro/wordpress/plugins/776-sj-object-cache-faster-object-cache-for-wordpress/"&gt;источник&lt;/a&gt; &lt;strong&gt;обязательно&lt;/strong&gt;.&lt;/p&gt;
	&lt;h4&gt;Связанные записи&lt;/h4&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/738-wp-file-cache-1-1/" title="WP File Cache 1.1 (Декабрь 19, 2009)"&gt;WP File Cache 1.1&lt;/a&gt; (70)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/190-wp-file-cache-replacement-for-wp_object_cache-with-persistent-caching/" title="WP File Cache: замена WP_Object_Cache с поддержкой долговременного кэширования (Июнь 12, 2008)"&gt;WP File Cache: замена WP_Object_Cache с поддержкой долговременного кэширования&lt;/a&gt; (16)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress-plugins/wp-file-cache/" title="WP File Cache: долговременное кэширование в WordPress (Декабрь 2, 2008)"&gt;WP File Cache: долговременное кэширование в WordPress&lt;/a&gt; (165)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/750-wp-file-cache-1-2-1/" title="WP File Cache 1.2.1 (Январь 14, 2010)"&gt;WP File Cache 1.2.1&lt;/a&gt; (33)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/420-wp-file-cache-10/" title="WP File Cache 1.0 (Декабрь 2, 2008)"&gt;WP File Cache 1.0&lt;/a&gt; (24)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MCsWPgcEbuLGMxshfQR9W1cJaXI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MCsWPgcEbuLGMxshfQR9W1cJaXI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MCsWPgcEbuLGMxshfQR9W1cJaXI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MCsWPgcEbuLGMxshfQR9W1cJaXI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=vG7k9Sn4-gM:i-c5VIwa-Xs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=vG7k9Sn4-gM:i-c5VIwa-Xs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=vG7k9Sn4-gM:i-c5VIwa-Xs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=vG7k9Sn4-gM:i-c5VIwa-Xs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=vG7k9Sn4-gM:i-c5VIwa-Xs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=vG7k9Sn4-gM:i-c5VIwa-Xs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=vG7k9Sn4-gM:i-c5VIwa-Xs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=vG7k9Sn4-gM:i-c5VIwa-Xs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=vG7k9Sn4-gM:i-c5VIwa-Xs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=vG7k9Sn4-gM:i-c5VIwa-Xs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=vG7k9Sn4-gM:i-c5VIwa-Xs:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=vG7k9Sn4-gM:i-c5VIwa-Xs:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=vG7k9Sn4-gM:i-c5VIwa-Xs:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=vG7k9Sn4-gM:i-c5VIwa-Xs:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sjblog/~4/vG7k9Sn4-gM" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.sjinks.pro/wordpress/plugins/776-sj-object-cache-faster-object-cache-for-wordpress/#comments" thr:count="24" />
		<link rel="replies" type="application/atom+xml" href="http://blog.sjinks.pro/wordpress/plugins/776-sj-object-cache-faster-object-cache-for-wordpress/feed/atom/" thr:count="24" />
		<thr:total>24</thr:total>
	<feedburner:origLink>http://blog.sjinks.pro/wordpress/plugins/776-sj-object-cache-faster-object-cache-for-wordpress/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Vladimir</name>
						<uri>http://blog.sjinks.pro/</uri>
					</author>
		<title type="html"><![CDATA[Ошибка в ORM Kohana 3 при использовании префиксов таблиц]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sjblog/~3/xVopGeURNPg/" />
		<id>http://blog.sjinks.pro/?p=772</id>
		<updated>2010-02-20T04:19:45Z</updated>
		<published>2010-02-19T11:00:51Z</published>
		<category scheme="http://blog.sjinks.pro" term="Kohana" /><category scheme="http://blog.sjinks.pro" term="Kohana 3" /><category scheme="http://blog.sjinks.pro" term="ORM" /><category scheme="http://blog.sjinks.pro" term="ошибка" /><category scheme="http://blog.sjinks.pro" term="патч" />		<summary type="html"><![CDATA[Ситуация: имеем две таблицы: пользователи и подписки:
CREATE TABLE prefix_users (
    id INTEGER NOT NULL PRIMARY KEY,
    name VARCHAR(255) NOT NULL
);

CREATE TABLE prefix_subscriptions (
    id INTEGER NOT NULL PRIMARY KEY,
    user_id INTEGER UNSIGNED NOT NULL,
    some_data TEXT NOT NULL
);
Один пользователь может [...]<hr/>
<p>© 2008–2010 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>

<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a
href="http://blog.sjinks.pro/kohana/772-bug-in-kohana-3-orm-when-using-table-prefixes/">источник</a> <strong>обязательно</strong>.</p>]]></summary>
		<content type="html" xml:base="http://blog.sjinks.pro/kohana/772-bug-in-kohana-3-orm-when-using-table-prefixes/">&lt;p&gt;Ситуация: имеем две таблицы: пользователи и подписки:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p77214"&gt;
        &lt;div class="code mysql" id="p772code14"&gt;
&lt;span class="kw1"&gt;CREATE&lt;/span&gt; &lt;span class="kw1"&gt;TABLE&lt;/span&gt; prefix_users &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; id &lt;span class="kw4"&gt;INTEGER&lt;/span&gt; &lt;span class="kw10"&gt;NOT&lt;/span&gt; &lt;span class="kw3"&gt;NULL&lt;/span&gt; &lt;span class="kw1"&gt;PRIMARY KEY&lt;/span&gt;&lt;span class="sy2"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; name &lt;span class="kw4"&gt;VARCHAR&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;255&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="kw10"&gt;NOT&lt;/span&gt; &lt;span class="kw3"&gt;NULL&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy2"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kw1"&gt;CREATE&lt;/span&gt; &lt;span class="kw1"&gt;TABLE&lt;/span&gt; prefix_subscriptions &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; id &lt;span class="kw4"&gt;INTEGER&lt;/span&gt; &lt;span class="kw10"&gt;NOT&lt;/span&gt; &lt;span class="kw3"&gt;NULL&lt;/span&gt; &lt;span class="kw1"&gt;PRIMARY KEY&lt;/span&gt;&lt;span class="sy2"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; user_id &lt;span class="kw4"&gt;INTEGER&lt;/span&gt; &lt;span class="kw6"&gt;UNSIGNED&lt;/span&gt; &lt;span class="kw10"&gt;NOT&lt;/span&gt; &lt;span class="kw3"&gt;NULL&lt;/span&gt;&lt;span class="sy2"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; some_data &lt;span class="kw4"&gt;TEXT&lt;/span&gt; &lt;span class="kw10"&gt;NOT&lt;/span&gt; &lt;span class="kw3"&gt;NULL&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy2"&gt;;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Один пользователь может иметь несколько подписок, одна подписка может принадлежать только одному пользователю.&lt;span id="more-772"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Настройки соединения с базой данных (&lt;code&gt;application/config/database.&lt;a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP"&gt;php&lt;/a&gt;&lt;/code&gt;) имеют следующий вид:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p77215"&gt;
        &lt;div class="code php" id="p772code15"&gt;
&lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'default'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'type'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'mysql'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'connection'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'hostname'&lt;/span&gt; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'localhost'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'username'&lt;/span&gt; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'user'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'password'&lt;/span&gt; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'pass'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'persistent'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw4"&gt;FALSE&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'database'&lt;/span&gt; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'database'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'table_prefix'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'prefix_'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'charset'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'utf8'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'caching'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw4"&gt;FALSE&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'profiling'&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw4"&gt;TRUE&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Модели в Kohana 3 будут иметь следующий вид:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p77216"&gt;
        &lt;div class="code php" id="p772code16"&gt;
&lt;span class="co1"&gt;// application/classes/model/user.php&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw2"&gt;class&lt;/span&gt; Model_User &lt;span class="kw2"&gt;extends&lt;/span&gt; ORM&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw2"&gt;protected&lt;/span&gt; &lt;span class="re0"&gt;$_has_many&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'subscriptions'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'foreign_key'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'user_id'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'model'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'Subscription'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="co1"&gt;// application/classes/model/subscription.php&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw2"&gt;class&lt;/span&gt; Model_Subscription &lt;span class="kw2"&gt;extends&lt;/span&gt; ORM&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw2"&gt;protected&lt;/span&gt; &lt;span class="re0"&gt;$_belongs_to&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'user'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'foreign_key'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'user_id'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'model'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'User'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Допустим, что в контроллере у нас есть вызов наподобие&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p77217"&gt;
        &lt;div class="code php" id="p772code17"&gt;
ORM&lt;span class="sy0"&gt;::&lt;/span&gt;&lt;span class="me2"&gt;factory&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st_h"&gt;'Subscription'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;with&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st_h"&gt;'user'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;find_all&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Что произойдёт? А ничего хорошего:&lt;/p&gt;
&lt;pre&gt;
Database_Exception [ 1054 ]: Unknown column 'prefix_user.id' in 'field list' [ SELECT `prefix_user`.`id` AS `user:id`, `prefix_user`.`name` AS `user:name`, `prefix_subscriptions`.* FROM `prefix_subscriptions` LEFT JOIN `prefix_users` AS `user` ON (`prefix_user`.`id` = `prefix_subscriptions`.`user_id`) ORDER BY `prefix_subscriptions`.`id` ASC ] ~ MODPATH/database/classes/kohana/database/&lt;a href="http://blog.sjinks.pro/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  MySQL"&gt;mysql&lt;/a&gt;.&lt;a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP"&gt;php&lt;/a&gt; [ 183 ]
&lt;/pre&gt;
&lt;p&gt;Почему? Модуль ORM предполагал, что запрос будет выглядеть так:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p77218"&gt;
        &lt;div class="code mysql" id="p772code18"&gt;
&lt;span class="kw1"&gt;SELECT&lt;/span&gt; &lt;span class="st0"&gt;`user`&lt;/span&gt;.&lt;span class="st0"&gt;`id`&lt;/span&gt; &lt;span class="kw1"&gt;AS&lt;/span&gt; &lt;span class="st0"&gt;`user:id`&lt;/span&gt;&lt;span class="sy2"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;`user`&lt;/span&gt;.&lt;span class="st0"&gt;`name`&lt;/span&gt; &lt;span class="kw1"&gt;AS&lt;/span&gt; &lt;span class="st0"&gt;`user:name`&lt;/span&gt;&lt;span class="sy2"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;`subscriptions`&lt;/span&gt;.&lt;span class="sy1"&gt;*&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;FROM&lt;/span&gt; &lt;span class="st0"&gt;`subscriptions`&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw13"&gt;LEFT&lt;/span&gt; &lt;span class="kw1"&gt;JOIN&lt;/span&gt; &lt;span class="st0"&gt;`users`&lt;/span&gt; &lt;span class="kw1"&gt;AS&lt;/span&gt; &lt;span class="st0"&gt;`user`&lt;/span&gt; &lt;span class="kw1"&gt;ON&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;`user`&lt;/span&gt;.&lt;span class="st0"&gt;`id`&lt;/span&gt; &lt;span class="sy1"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;`subscriptions`&lt;/span&gt;.&lt;span class="st0"&gt;`user&lt;span class="es1"&gt;_&lt;/span&gt;id`&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;ORDER BY&lt;/span&gt; &lt;span class="st0"&gt;`subscriptions`&lt;/span&gt;.&lt;span class="st0"&gt;`id`&lt;/span&gt; &lt;span class="kw1"&gt;ASC&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Так бы и было, если бы таблицы не имели префикса. &lt;code&gt;ORM&lt;/code&gt; передаёт &lt;code&gt;Database&lt;/code&gt; поля в виде &lt;code&gt;user.id&lt;/code&gt;, &lt;code&gt;Database&lt;/code&gt; их экранирует в &lt;code&gt;`user`.`id`&lt;/code&gt;. Проблема в том, что &lt;code&gt;Database&lt;/code&gt; ничего не знает о псевдонимах таблиц (&lt;code&gt;users AS user&lt;/code&gt; в &lt;span class="codebox"&gt;&lt;code class="mysql"&gt;&lt;span class="kw1"&gt;JOIN&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;), а ORM ничего не знает о префиксах таблиц. Поэтому Database с чистой совестью добавляет префикс ко всему, что находится в именах слева от точки. В результате вместо &lt;code&gt;SELECT `user`.`id` AS `user:id`&lt;/code&gt; получаем &lt;code&gt;SELECT `prefix_user`.`id` AS `user:id`&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Есть два решения:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Унаследовать свой класс ORM от Kohana_ORM и исправить в нём метод &lt;code&gt;with()&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;Исправить метод &lt;span class="codebox"&gt;&lt;code class="php"&gt;Kohana_ORM&lt;span class="sy0"&gt;::&lt;/span&gt;&lt;span class="me2"&gt;with&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Результат получится примерно одинаковым — код будет выглядеть так:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p77219"&gt;
        &lt;div class="code php" id="p772code19"&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw2"&gt;public&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt; with&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$target_path&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw1"&gt;isset&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_with_applied&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="re0"&gt;$target_path&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Don't join anything already joined&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Split object parts&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$aliases&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw3"&gt;explode&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st_h"&gt;':'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="re0"&gt;$target_path&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$target&lt;/span&gt; &amp;nbsp;&lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;foreach&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$aliases&lt;/span&gt; &lt;span class="kw1"&gt;as&lt;/span&gt; &lt;span class="re0"&gt;$alias&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Go down the line of objects to find the given target&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$parent&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="re0"&gt;$target&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$target&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="re0"&gt;$parent&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_related&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$alias&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt; &lt;span class="sy0"&gt;!&lt;/span&gt; &lt;span class="re0"&gt;$target&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Can't find related object&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Target alias is at the end&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$target_alias&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="re0"&gt;$alias&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Pop-off top alias to get the parent path (user:photo:tag becomes user:photo - the parent table prefix)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw3"&gt;array_pop&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$aliases&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$parent_path&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw3"&gt;implode&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st_h"&gt;':'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="re0"&gt;$aliases&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw1"&gt;empty&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$parent_path&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Use this table name itself for the parent path&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$parent_path&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_table_name&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;if&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt; &lt;span class="sy0"&gt;!&lt;/span&gt; &lt;span class="kw1"&gt;isset&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_with_applied&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="re0"&gt;$parent_path&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// If the parent path hasn't been joined yet, do it first (otherwise LEFT JOINs fail)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;with&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$parent_path&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Add to with_applied to prevent duplicate joins&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_with_applied&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="re0"&gt;$target_path&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw4"&gt;TRUE&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Use the keys of the empty object to determine the columns&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;foreach&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw3"&gt;array_keys&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$target&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_object&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="kw1"&gt;as&lt;/span&gt; &lt;span class="re0"&gt;$column&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$name&lt;/span&gt; &amp;nbsp; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st_h"&gt;'&amp;quot;'&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="re0"&gt;$target_path&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'&amp;quot;.&amp;quot;'&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="re0"&gt;$column&lt;/span&gt; &lt;span class="sy0"&gt;.&lt;/span&gt; &lt;span class="st_h"&gt;'&amp;quot;'&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$alias&lt;/span&gt; &amp;nbsp;&lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="re0"&gt;$target_path&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;':'&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="re0"&gt;$column&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Add the prefix so that load_result can determine the relationship&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;select&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$name&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="re0"&gt;$alias&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw1"&gt;isset&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$parent&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_belongs_to&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="re0"&gt;$target_alias&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Parent belongs_to target, use target's primary key and parent's foreign key&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$join_col1&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st_h"&gt;'&amp;quot;'&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="re0"&gt;$target_path&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'&amp;quot;.&amp;quot;'&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="re0"&gt;$target&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_primary_key&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'&amp;quot;'&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$join_col2&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="re0"&gt;$parent_path&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'.'&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="re0"&gt;$parent&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_belongs_to&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="re0"&gt;$target_alias&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'foreign_key'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Parent has_one target, use parent's primary key as target's foreign key&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$join_col1&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="re0"&gt;$parent_path&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'.'&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="re0"&gt;$parent&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_primary_key&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$join_col2&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st_h"&gt;'&amp;quot;'&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="re0"&gt;$target_path&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'&amp;quot;.&amp;quot;'&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="re0"&gt;$parent&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_has_one&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="re0"&gt;$target_alias&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'foreign_key'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'&amp;quot;'&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Join the related object into the result&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;join&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$target&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;_table_name&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="re0"&gt;$target_path&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st_h"&gt;'LEFT'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;on&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$join_col1&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st_h"&gt;'='&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="re0"&gt;$join_col2&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="http://blog.sjinks.pro/tag/patch/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  патч"&gt;Патч&lt;/a&gt; по объёму гораздо меньше:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p77220"&gt;
        &lt;div class="code diff" id="p772code20"&gt;
--- kohana/modules/orm/classes/kohana/orm.php&lt;br /&gt;
&lt;span class="re4"&gt;+++ kohana/modules/orm/classes/kohana/orm.php&lt;/span&gt;&lt;br /&gt;
&lt;span class="re6"&gt;@@ -&lt;span class="nu0"&gt;637&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; +&lt;span class="nu0"&gt;637&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; @@&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Use the keys of the empty object to determine the columns&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;array_keys&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;$target-&amp;gt;_object&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; as $column&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re7"&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $name &amp;nbsp; = $target_path.'.'.$column;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $name &amp;nbsp; = '&amp;quot;'.$target_path.'&amp;quot;.&amp;quot;'.$column . '&amp;quot;';&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $alias &amp;nbsp;= $target_path.':'.$column;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Add the prefix so that load_result can determine the relationship&lt;br /&gt;
&lt;span class="re6"&gt;@@ -&lt;span class="nu0"&gt;647&lt;/span&gt;,&lt;span class="nu0"&gt;14&lt;/span&gt; +&lt;span class="nu0"&gt;647&lt;/span&gt;,&lt;span class="nu0"&gt;14&lt;/span&gt; @@&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;isset&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;$parent-&amp;gt;_belongs_to&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;$target_alias&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Parent belongs_to target, use target's primary key and parent's foreign key&lt;br /&gt;
&lt;span class="re7"&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $join_col1 = $target_path.'.'.$target-&amp;gt;_primary_key;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $join_col1 = '&amp;quot;'.$target_path.'&amp;quot;.&amp;quot;'.$target-&amp;gt;_primary_key.'&amp;quot;';&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $join_col2 = $parent_path.'.'.$parent-&amp;gt;_belongs_to&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;$target_alias&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;'foreign_key'&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Parent has_one target, use parent's primary key as target's foreign key&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $join_col1 = $parent_path.'.'.$parent-&amp;gt;_primary_key;&lt;br /&gt;
&lt;span class="re7"&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $join_col2 = $target_path.'.'.$parent-&amp;gt;_has_one&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;$target_alias&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;'foreign_key'&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $join_col2 = '&amp;quot;'.$target_path.'&amp;quot;.&amp;quot;'.$parent-&amp;gt;_has_one&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;$target_alias&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;'foreign_key'&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; .'&amp;quot;';&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Join the related object into the result
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href='http://blog.sjinks.pro/wp-content/uploads/2010/02/orm.php.diff'&gt;Скачать патч (unified diff)&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Идея в том, что имена псевдонимов заключаются в двойные кавычки — в этом случае &lt;code&gt;Database&lt;/code&gt; не занимается «самодеятельностью» в виде добавления префиксов куда надо и не надо.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Проверялось на Kohana 3.0.3&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://dev.kohanaframework.org/issues/2634"&gt;Отчёт об ошибке в трекере Kohana&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;© 2008–2010 &lt;a href="http://blog.sjinks.pro"&gt;Ars Longa, Vita Brevis&lt;/a&gt;. Все права защищены. Перепубликация материалов без разрешения автора запрещена.&lt;/p&gt;

&lt;p&gt;При использовании материалов блога наличие активной не закрытой от индексирования ссылки на &lt;a
href="http://blog.sjinks.pro/kohana/772-bug-in-kohana-3-orm-when-using-table-prefixes/"&gt;источник&lt;/a&gt; &lt;strong&gt;обязательно&lt;/strong&gt;.&lt;/p&gt;
	&lt;h4&gt;Связанные записи&lt;/h4&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/" title="Учим WordPress правильно кодировать письма в UTF-8 (Сентябрь 27, 2008)"&gt;Учим WordPress правильно кодировать письма в UTF-8&lt;/a&gt; (30)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/495-deleting-parent-comment-causes-child-comments-to-be-incorrectly-displayed/" title="Удаление родительского комментария приводит к неправильному отображению дочерних комментариев (Февраль 1, 2009)"&gt;Удаление родительского комментария приводит к неправильному отображению дочерних комментариев&lt;/a&gt; (10)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/206-reset-password-in-wordpress-251/" title="Сброс пароля в WordPress 2.5.1 (Июнь 26, 2008)"&gt;Сброс пароля в WordPress 2.5.1&lt;/a&gt; (5)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/431-cause-to-be-proud/" title="Повод для гордости (Декабрь 7, 2008)"&gt;Повод для гордости&lt;/a&gt; (5)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/201-patch-for-wassup-16/" title="Патч для WassUp 1.6 (Июнь 20, 2008)"&gt;Патч для WassUp 1.6&lt;/a&gt; (2)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/o74BrCFgkWdR1PZLk5sMIrrdvoY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o74BrCFgkWdR1PZLk5sMIrrdvoY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/o74BrCFgkWdR1PZLk5sMIrrdvoY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o74BrCFgkWdR1PZLk5sMIrrdvoY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=xVopGeURNPg:YU9KQVywlrA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=xVopGeURNPg:YU9KQVywlrA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=xVopGeURNPg:YU9KQVywlrA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=xVopGeURNPg:YU9KQVywlrA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=xVopGeURNPg:YU9KQVywlrA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=xVopGeURNPg:YU9KQVywlrA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=xVopGeURNPg:YU9KQVywlrA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=xVopGeURNPg:YU9KQVywlrA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=xVopGeURNPg:YU9KQVywlrA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=xVopGeURNPg:YU9KQVywlrA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=xVopGeURNPg:YU9KQVywlrA:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=xVopGeURNPg:YU9KQVywlrA:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=xVopGeURNPg:YU9KQVywlrA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=xVopGeURNPg:YU9KQVywlrA:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sjblog/~4/xVopGeURNPg" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.sjinks.pro/kohana/772-bug-in-kohana-3-orm-when-using-table-prefixes/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://blog.sjinks.pro/kohana/772-bug-in-kohana-3-orm-when-using-table-prefixes/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://blog.sjinks.pro/kohana/772-bug-in-kohana-3-orm-when-using-table-prefixes/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Vladimir</name>
						<uri>http://blog.sjinks.pro/</uri>
					</author>
		<title type="html"><![CDATA[SQLMon для Code Igniter]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sjblog/~3/WAiG2gVWgbI/" />
		<id>http://blog.sjinks.pro/?p=769</id>
		<updated>2010-02-13T06:14:24Z</updated>
		<published>2010-02-13T06:10:58Z</published>
		<category scheme="http://blog.sjinks.pro" term="PHP" /><category scheme="http://blog.sjinks.pro" term="Code Igniter" /><category scheme="http://blog.sjinks.pro" term="MySQL" /><category scheme="http://blog.sjinks.pro" term="SQLMon" /><category scheme="http://blog.sjinks.pro" term="оптимизация" />		<summary type="html"><![CDATA[На днях мне довелось заняться оптимизацией одного проекта, написанного с использованием фреймворка Code Igniter. Важной частью процесса являлась оптимизация запросов к базе данных, а для этого как минимум нужно видеть эти запросы перед глазами.
Этот минимум в Code Igniter достигается очень просто: вызовом
$this-&#62;output-&#62;enable_profiler(TRUE);
в контроллере. Но когда запросов на странице очень много, хотелось бы избавиться от рутинного [...]<hr/>
<p>© 2008–2010 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>

<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a
href="http://blog.sjinks.pro/php/769-sqlmon-for-code-igniter/">источник</a> <strong>обязательно</strong>.</p>]]></summary>
		<content type="html" xml:base="http://blog.sjinks.pro/php/769-sqlmon-for-code-igniter/">&lt;p&gt;На днях мне довелось заняться оптимизацией одного проекта, написанного с использованием фреймворка Code Igniter. Важной частью процесса являлась &lt;a href="http://blog.sjinks.pro/tag/optimization/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  оптимизация"&gt;оптимизация&lt;/a&gt; запросов к базе данных, а для этого как минимум нужно видеть эти запросы перед глазами.&lt;/p&gt;
&lt;p&gt;Этот минимум в Code Igniter достигается очень просто: вызовом&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76924"&gt;
        &lt;div class="code php" id="p769code24"&gt;
&lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;output&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;enable_profiler&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw4"&gt;TRUE&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;в контроллере. Но когда запросов на странице очень много, хотелось бы избавиться от рутинного выполнения &lt;span class="codebox"&gt;&lt;code class="mysql"&gt;&lt;span class="kw1"&gt;EXPLAIN&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; для каждого подозрительного запроса. Что, собственно, и делает SQLMon. Возникает логичное желание интегрировать его в Code Igniter.&lt;span id="more-769"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Но в отличие от &lt;a href="http://blog.sjinks.pro/kohana/762-sqlmon-for-kohana-3/"&gt;Kohana&lt;/a&gt;, с Code Igniter здесь не всё так просто. Во-первых, Code Igniter не поддерживает так называемую &lt;dfn&gt;&lt;a href="http://v3.kohanaphp.com/guide/about.filesystem"&gt;каскадную файловую систему&lt;/a&gt;&lt;/dfn&gt;. Во-вторых, Code Igniter &lt;a href="http://codeigniter.com/user_guide/general/creating_libraries.html"&gt;не позволяет&lt;/a&gt; расширять или заменять класс &lt;code&gt;Database&lt;/code&gt;. А изменять код системы (и поддерживать его при каждом обновлении) очень не хочется. Тем не менее, я нашел простое решение и реализовал соответствующую библиотеку.&lt;/p&gt;
&lt;p&gt;Перед использованием библиотеки рекомендуется прочитать статью «&lt;a href="http://dev.mysql.com/doc/refman/5.0/en/using-explain.html"&gt;Optimizing Queries with EXPLAIN&lt;/a&gt;».&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Использование библиотеки.&lt;/strong&gt; Библиотека состоит из двух частей:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Драйвер базы данных&lt;/strong&gt; (каталог &lt;code&gt;system/database/drivers/&lt;a href="http://blog.sjinks.pro/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  MySQL"&gt;mysql&lt;/a&gt;_exp&lt;/code&gt;). Драйвер требует наличия драйвера &lt;a href="http://blog.sjinks.pro/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  MySQL"&gt;MySQL&lt;/a&gt; (класс &lt;code&gt;CI_DB_&lt;a href="http://blog.sjinks.pro/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  MySQL"&gt;mysql&lt;/a&gt;_driver&lt;/code&gt;), так как, по сути дела, является производным от него классом. Драйвер переопределяет метод &lt;span class="codebox"&gt;&lt;code class="php"&gt;_execute&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;, в котором и выполняет анализ запроса.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Представление (view).&lt;/strong&gt; Находится в каталоге &lt;code&gt;system/application/views/sqlmon&lt;/code&gt;, используется для отображения результатов.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Установка библиотеки простая: содержимое каталога &lt;code&gt;system/database&lt;/code&gt; должен быть скопировано в &lt;code&gt;system/database&lt;/code&gt;, содержимое каталога &lt;code&gt;system/application&lt;/code&gt; должно быть скопировано в каталог приложения. Затем нужно отредактировать настройки соединения с базой данных (файл &lt;code&gt;appliaction/config/database.&lt;a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP"&gt;php&lt;/a&gt;&lt;/code&gt;): параметр &lt;code&gt;dbdriver&lt;/code&gt; соединения нужно установить в &lt;code&gt;&lt;a href="http://blog.sjinks.pro/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  MySQL"&gt;mysql&lt;/a&gt;_exp&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76925"&gt;
        &lt;div class="code php" id="p769code25"&gt;
&lt;span class="re0"&gt;$active_group&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;default&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$active_record&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw4"&gt;TRUE&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'hostname'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'username'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'password'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'database'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;database&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'dbdriver'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;mysql_exp&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt; &lt;span class="co1"&gt;// &amp;lt;&amp;lt;&amp;lt; Вот оно&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'dbprefix'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;mso_&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'pconnect'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw4"&gt;TRUE&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'db_debug'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw4"&gt;TRUE&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'cache_on'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw4"&gt;FALSE&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'cachedir'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;system/cache/db&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'char_set'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;utf8&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re0"&gt;$db&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'default'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st_h"&gt;'dbcollat'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;utf8_general_ci&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Затем в соответствующее представление добавляем код:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76926"&gt;
        &lt;div class="code php" id="p769code26"&gt;
&lt;span class="kw2"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$ci&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt;get_instance&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="re0"&gt;$ci&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;load&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;view&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st_h"&gt;'sqlmon/sqlmon'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="sy1"&gt;?&amp;gt;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;И наслаждаемся. На выходе должно получиться что-то вида (на примере MaxSite CMS; изображение можно кликнуть):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.sjinks.pro/wp-content/uploads/2010/02/codeigniter-sqlmon-maxsite.png" rel="lightbox" title="Результат работы SQLMon для Code Igniter на примере MaxSite CMS"&gt;&lt;img src="http://blog.sjinks.pro/wp-content/uploads/2010/02/codeigniter-sqlmon-maxsite-300x292.png" alt="Результат работы SQLMon для Code Igniter на примере MaxSite CMS" title="Результат работы SQLMon для Code Igniter на примере MaxSite CMS" width="300" height="292" class="alignnone size-medium wp-image-770" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://d.sjinks.pro/sqlmon-ci.zip"&gt;Скачать SQLMon для Code Igniter&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;© 2008–2010 &lt;a href="http://blog.sjinks.pro"&gt;Ars Longa, Vita Brevis&lt;/a&gt;. Все права защищены. Перепубликация материалов без разрешения автора запрещена.&lt;/p&gt;

&lt;p&gt;При использовании материалов блога наличие активной не закрытой от индексирования ссылки на &lt;a
href="http://blog.sjinks.pro/php/769-sqlmon-for-code-igniter/"&gt;источник&lt;/a&gt; &lt;strong&gt;обязательно&lt;/strong&gt;.&lt;/p&gt;
	&lt;h4&gt;Связанные записи&lt;/h4&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/kohana/762-sqlmon-for-kohana-3/" title="SQLMon для Kohana 3 (Февраль 9, 2010)"&gt;SQLMon для Kohana 3&lt;/a&gt; (2)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/575-horror-of-taxonomy-in-wordpress/" title="Ужасы таксономии в WordPress (Июнь 9, 2009)"&gt;Ужасы таксономии в WordPress&lt;/a&gt; (13)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/192-sqlmon-plugin-for-sql-query-analysis/" title="SQLMon: плагин для анализа SQL-запросов (Июнь 13, 2008)"&gt;SQLMon: плагин для анализа SQL-запросов&lt;/a&gt; (6)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress-plugins/sqlmon/" title="SQLMon: мониторинг запросов MySQL (Ноябрь 23, 2009)"&gt;SQLMon: мониторинг запросов MySQL&lt;/a&gt; (6)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/mysql/327-shit-happens/" title="Чудеса&amp;#8230; (Сентябрь 1, 2008)"&gt;Чудеса&amp;#8230;&lt;/a&gt; (3)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i2vP0OiSJKM3_lcYcmOIraL-VKk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i2vP0OiSJKM3_lcYcmOIraL-VKk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i2vP0OiSJKM3_lcYcmOIraL-VKk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i2vP0OiSJKM3_lcYcmOIraL-VKk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=WAiG2gVWgbI:BBZ-nbsCUa8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=WAiG2gVWgbI:BBZ-nbsCUa8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=WAiG2gVWgbI:BBZ-nbsCUa8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=WAiG2gVWgbI:BBZ-nbsCUa8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=WAiG2gVWgbI:BBZ-nbsCUa8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=WAiG2gVWgbI:BBZ-nbsCUa8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=WAiG2gVWgbI:BBZ-nbsCUa8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=WAiG2gVWgbI:BBZ-nbsCUa8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=WAiG2gVWgbI:BBZ-nbsCUa8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=WAiG2gVWgbI:BBZ-nbsCUa8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=WAiG2gVWgbI:BBZ-nbsCUa8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=WAiG2gVWgbI:BBZ-nbsCUa8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=WAiG2gVWgbI:BBZ-nbsCUa8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=WAiG2gVWgbI:BBZ-nbsCUa8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sjblog/~4/WAiG2gVWgbI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.sjinks.pro/php/769-sqlmon-for-code-igniter/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.sjinks.pro/php/769-sqlmon-for-code-igniter/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.sjinks.pro/php/769-sqlmon-for-code-igniter/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Vladimir</name>
						<uri>http://blog.sjinks.pro/</uri>
					</author>
		<title type="html"><![CDATA[Deferred RSS 1.1]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sjblog/~3/-fFv9uPRgAY/" />
		<id>http://blog.sjinks.pro/?p=768</id>
		<updated>2010-02-11T19:08:11Z</updated>
		<published>2010-02-11T19:07:19Z</published>
		<category scheme="http://blog.sjinks.pro" term="Плагины WordPress" /><category scheme="http://blog.sjinks.pro" term="Deferred RSS" /><category scheme="http://blog.sjinks.pro" term="WordPress" /><category scheme="http://blog.sjinks.pro" term="плагин" />		<summary type="html"><![CDATA[Вышла новая версия плагина Deferred RSS (1.1). Плагин предназначен для отложенной публикации фидов для того, чтобы поисковые системы проиндексировали сайт-источник первым.
Изменения в данной версии:

добавлена украинская локализация — во многом благодаря Google Translate;
добавлена возможность указания ссылки на оригинал статьи;
исправлены мелкие недочёты в коде.

Практические рекомендации:

При использовании режима замены кириллических букв английскими убедитесь, что поисковым системам запрещено индексировать ваш фид.
Хотя [...]<hr/>
<p>© 2008–2010 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>

<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a
href="http://blog.sjinks.pro/wordpress/plugins/768-deferred-rss-1-1/">источник</a> <strong>обязательно</strong>.</p>]]></summary>
		<content type="html" xml:base="http://blog.sjinks.pro/wordpress/plugins/768-deferred-rss-1-1/">&lt;p&gt;Вышла новая версия плагина &lt;a href="http://blog.sjinks.pro/wordpress/plugins/424-deferred-feed-publishing/"&gt;Deferred RSS&lt;/a&gt; (1.1). &lt;a href="http://blog.sjinks.pro/tag/plugin/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  плагин"&gt;Плагин&lt;/a&gt; предназначен для отложенной публикации фидов для того, чтобы поисковые системы проиндексировали сайт-источник первым.&lt;span id="more-768"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Изменения в данной версии:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;добавлена украинская локализация — во многом благодаря Google Translate;&lt;/li&gt;
&lt;li&gt;добавлена возможность указания ссылки на оригинал статьи;&lt;/li&gt;
&lt;li&gt;исправлены мелкие недочёты в коде.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Практические рекомендации:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;При использовании режима замены кириллических букв английскими убедитесь, что поисковым системам запрещено индексировать ваш фид.&lt;/li&gt;
&lt;li&gt;Хотя &lt;a href="http://blog.sjinks.pro/tag/plugin/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  плагин"&gt;плагин&lt;/a&gt; умеет добавлять в фид ссылку на оригинал статьи, сплоггеры могут заменить её внутренней ссылкой. Поэтому будьте креативнее: плагины для замены ссылок не всегда могут заменить все варианты ссылок. Например:
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76828"&gt;
        &lt;div class="code html" id="p768code28"&gt;
При использовании материалов блога наличие ссылки на &lt;span class="sc2"&gt;&amp;lt;&lt;span class="kw2"&gt;a&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="sc2"&gt;&lt;span class="kw3"&gt;href&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;%4$s&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="sc2"&gt;&amp;gt;&lt;/span&gt;источник&lt;span class="sc2"&gt;&amp;lt;&lt;span class="sy0"&gt;/&lt;/span&gt;&lt;span class="kw2"&gt;a&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
обязательно.
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

Данный код является корректным HTML, но далеко не всякий парсер, использующий регулярные выражения, сможет его понять.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://d.sjinks.pro/wordpress/deferred-rss-1.1.zip"&gt;Скачать плагин Deferred RSS 1.1&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;В ближайшем времени (если заявку одобрят), &lt;a href="http://blog.sjinks.pro/tag/plugin/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  плагин"&gt;плагин&lt;/a&gt; переедет жить на &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;wordpress&lt;/a&gt;.org (&lt;a href="http://wordpress.org/extend/plugins/deferred-rss/"&gt;сюда&lt;/a&gt;), обновляться можно будет через панель управления. Русскоязычное описание плагина будет доступно &lt;a href="http://blog.sjinks.pro/wordpress-plugins/deferred-rss/"&gt;здесь&lt;/a&gt; (комментарии и пожелания просьба оставлять там же).&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;© 2008–2010 &lt;a href="http://blog.sjinks.pro"&gt;Ars Longa, Vita Brevis&lt;/a&gt;. Все права защищены. Перепубликация материалов без разрешения автора запрещена.&lt;/p&gt;

&lt;p&gt;При использовании материалов блога наличие активной не закрытой от индексирования ссылки на &lt;a
href="http://blog.sjinks.pro/wordpress/plugins/768-deferred-rss-1-1/"&gt;источник&lt;/a&gt; &lt;strong&gt;обязательно&lt;/strong&gt;.&lt;/p&gt;
	&lt;h4&gt;Связанные записи&lt;/h4&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/424-deferred-feed-publishing/" title="Deferred RSS: отложенная публикация RSS-фидов (Декабрь 5, 2008)"&gt;Deferred RSS: отложенная публикация RSS-фидов&lt;/a&gt; (109)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress-plugins/deferred-rss/" title="Deferred RSS (Февраль 11, 2010)"&gt;Deferred RSS&lt;/a&gt; (8)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/74-sick-and-tired-of-spamers-yet-another-captcha-for-wordpress/" title="Спамеры просто достали, или, Еще одна CAPTCHA для WordPress (Апрель 7, 2008)"&gt;Спамеры просто достали, или, Еще одна CAPTCHA для WordPress&lt;/a&gt; (37)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/61-russian-addthis-one-button-for-all-bookmark-services/" title="Русский AddThis — одна кнопка для всех сервисов закладок (Март 31, 2008)"&gt;Русский AddThis — одна кнопка для всех сервисов закладок&lt;/a&gt; (13)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/558-redirect-plugin-by-nick-berlette/" title="Плагин Redirect от Nick Berlette (Май 15, 2009)"&gt;Плагин Redirect от Nick Berlette&lt;/a&gt; (4)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VkFw-n9A1G9jTef0o5Lfi6XLCAE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VkFw-n9A1G9jTef0o5Lfi6XLCAE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VkFw-n9A1G9jTef0o5Lfi6XLCAE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VkFw-n9A1G9jTef0o5Lfi6XLCAE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=-fFv9uPRgAY:uGbAmuY4HvI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=-fFv9uPRgAY:uGbAmuY4HvI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=-fFv9uPRgAY:uGbAmuY4HvI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=-fFv9uPRgAY:uGbAmuY4HvI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=-fFv9uPRgAY:uGbAmuY4HvI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=-fFv9uPRgAY:uGbAmuY4HvI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=-fFv9uPRgAY:uGbAmuY4HvI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=-fFv9uPRgAY:uGbAmuY4HvI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=-fFv9uPRgAY:uGbAmuY4HvI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=-fFv9uPRgAY:uGbAmuY4HvI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=-fFv9uPRgAY:uGbAmuY4HvI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=-fFv9uPRgAY:uGbAmuY4HvI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=-fFv9uPRgAY:uGbAmuY4HvI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=-fFv9uPRgAY:uGbAmuY4HvI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sjblog/~4/-fFv9uPRgAY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.sjinks.pro/wordpress/plugins/768-deferred-rss-1-1/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.sjinks.pro/wordpress/plugins/768-deferred-rss-1-1/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.sjinks.pro/wordpress/plugins/768-deferred-rss-1-1/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Vladimir</name>
						<uri>http://blog.sjinks.pro/</uri>
					</author>
		<title type="html"><![CDATA[Притча о зависти и злости]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sjblog/~3/F4nzLFh51_g/" />
		<id>http://blog.sjinks.pro/?p=765</id>
		<updated>2010-02-11T13:41:35Z</updated>
		<published>2010-02-10T19:25:42Z</published>
		<category scheme="http://blog.sjinks.pro" term="Всё подряд" />		<summary type="html"><![CDATA[Люди! Будьте добрее!

Один старый мастер боевых искусств решил больше никогда не биться. Но однажды его все-таки вызвал на бой один нахальный юный воин, который считал, что он куда искуснее и сильнее.
Однако, старый мастер просто сидел и никак не реагировал на нахала. Тогда воин принялся оскорблять его и его предков, чтобы спровоцировать мастера, но и это [...]<hr/>
<p>© 2008–2010 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>

<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a
href="http://blog.sjinks.pro/uncategorized/765-about-envy-and-anger/">источник</a> <strong>обязательно</strong>.</p>]]></summary>
		<content type="html" xml:base="http://blog.sjinks.pro/uncategorized/765-about-envy-and-anger/">&lt;h2&gt;&lt;em&gt;Люди! Будьте добрее!&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;&lt;br /&gt;
Один старый мастер боевых искусств решил больше никогда не биться. Но однажды его все-таки вызвал на бой один нахальный юный воин, который считал, что он куда искуснее и сильнее.&lt;/p&gt;
&lt;p&gt;Однако, старый мастер просто сидел и никак не реагировал на нахала. Тогда воин принялся оскорблять его и его предков, чтобы спровоцировать мастера, но и это ему не помогло. В конце концов юный воин отчаялся и ушел.&lt;/p&gt;
&lt;p&gt;Ученики мастера были удивлены действиями своего учителя, многие начали его осуждать:&lt;/p&gt;
&lt;p&gt;— Неужели вам не дорога ваша честь и честь ваших предков?&lt;/p&gt;
&lt;p&gt;Тогда старый мастер сказал:&lt;/p&gt;
&lt;p&gt;— Когда вам дарят подарок, а вы его не принимаете, то кому тогда принадлежит это подарок?&lt;/p&gt;
&lt;p&gt;— Конечно тому, кто его дарит!&lt;/p&gt;
&lt;p&gt;— Так же дела обстоят с завистью, злостью и ненавистью. Если мы их не принимаем, они остаются у дающего.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ksenzov.ru/pritcha-o-zavisti-i-zlosti.html"&gt;Источник&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;© 2008–2010 &lt;a href="http://blog.sjinks.pro"&gt;Ars Longa, Vita Brevis&lt;/a&gt;. Все права защищены. Перепубликация материалов без разрешения автора запрещена.&lt;/p&gt;

&lt;p&gt;При использовании материалов блога наличие активной не закрытой от индексирования ссылки на &lt;a
href="http://blog.sjinks.pro/uncategorized/765-about-envy-and-anger/"&gt;источник&lt;/a&gt; &lt;strong&gt;обязательно&lt;/strong&gt;.&lt;/p&gt;
	&lt;h4&gt;Связанные записи&lt;/h4&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;Нет связанных записей.&lt;/li&gt;
	&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8dtvIFMWYeuyC8L1bfRiMDlFhmQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8dtvIFMWYeuyC8L1bfRiMDlFhmQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8dtvIFMWYeuyC8L1bfRiMDlFhmQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8dtvIFMWYeuyC8L1bfRiMDlFhmQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=F4nzLFh51_g:p9mFpwZnQv0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=F4nzLFh51_g:p9mFpwZnQv0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=F4nzLFh51_g:p9mFpwZnQv0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=F4nzLFh51_g:p9mFpwZnQv0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=F4nzLFh51_g:p9mFpwZnQv0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=F4nzLFh51_g:p9mFpwZnQv0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=F4nzLFh51_g:p9mFpwZnQv0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=F4nzLFh51_g:p9mFpwZnQv0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=F4nzLFh51_g:p9mFpwZnQv0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=F4nzLFh51_g:p9mFpwZnQv0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=F4nzLFh51_g:p9mFpwZnQv0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=F4nzLFh51_g:p9mFpwZnQv0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=F4nzLFh51_g:p9mFpwZnQv0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=F4nzLFh51_g:p9mFpwZnQv0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sjblog/~4/F4nzLFh51_g" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.sjinks.pro/uncategorized/765-about-envy-and-anger/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.sjinks.pro/uncategorized/765-about-envy-and-anger/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.sjinks.pro/uncategorized/765-about-envy-and-anger/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Vladimir</name>
						<uri>http://blog.sjinks.pro/</uri>
					</author>
		<title type="html"><![CDATA[cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sjblog/~3/iHxr6xKmBiY/" />
		<id>http://blog.sjinks.pro/?p=764</id>
		<updated>2010-02-13T06:55:38Z</updated>
		<published>2010-02-10T16:42:20Z</published>
		<category scheme="http://blog.sjinks.pro" term="Linux" /><category scheme="http://blog.sjinks.pro" term="Lucid Lynx" /><category scheme="http://blog.sjinks.pro" term="Ubuntu" /><category scheme="http://blog.sjinks.pro" term="udev" /><category scheme="http://blog.sjinks.pro" term="ошибка" /><category scheme="http://blog.sjinks.pro" term="патч" />		<summary type="html"><![CDATA[Счастливым обладателям Lucid Lynx
Если вы — счастливый обладатель тестовой версии Ubuntu 10.04 (Lucid Lynx), и после обновления udev система выдаёт такую ошибку:
Обрабатываются триггеры для initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.32-12-server
cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога
update-initramfs: failed for /boot/initrd.img-2.6.32-12-server              
dpkg: подпроцесс установлен сценарий [...]<hr/>
<p>© 2008–2010 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>

<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a
href="http://blog.sjinks.pro/linux/764-update-initramfs-error-cannot-stat/">источник</a> <strong>обязательно</strong>.</p>]]></summary>
		<content type="html" xml:base="http://blog.sjinks.pro/linux/764-update-initramfs-error-cannot-stat/">&lt;h2&gt;&lt;em&gt;Счастливым обладателям Lucid Lynx&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;Если вы — счастливый обладатель тестовой версии &lt;a href="http://blog.sjinks.pro/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  Ubuntu"&gt;Ubuntu&lt;/a&gt; 10.04 (Lucid Lynx), и после обновления &lt;code&gt;udev&lt;/code&gt; система выдаёт такую ошибку:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76437"&gt;
        &lt;div class="code text" id="p764code37"&gt;
Обрабатываются триггеры для initramfs-tools ...&lt;br /&gt;
update-initramfs: Generating /boot/initrd.img-2.6.32-12-server&lt;br /&gt;
cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога&lt;br /&gt;
update-initramfs: failed for /boot/initrd.img-2.6.32-12-server &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
dpkg: подпроцесс установлен сценарий post-installation возвратил код ошибки 1&lt;br /&gt;
E: Sub-process /usr/bin/dpkg returned an error code (2) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
Не удалось установить пакет. &amp;nbsp;Попытка восстановить: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
Настраивается пакет initramfs-tools (0.92bubuntu64) ... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
update-initramfs: deferring update (trigger activated) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Обрабатываются триггеры для initramfs-tools ...&lt;br /&gt;
update-initramfs: Generating /boot/initrd.img-2.6.32-12-server&lt;br /&gt;
cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога&lt;br /&gt;
update-initramfs: failed for /boot/initrd.img-2.6.32-12-server &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
dpkg: подпроцесс установлен сценарий post-installation возвратил код ошибки 1&lt;br /&gt;
E: dpkg был прерван, Вы должны вручную выполнить 'sudo dpkg --configure -a' чтобы исправить эту проблему. &lt;br /&gt;
E: Не удалось получить системную блокировку! (Возможно, запущен другой экземпляр apt или dpkg?) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
E: dpkg был прерван, Вы должны вручную выполнить 'sudo dpkg --configure -a' чтобы исправить эту проблему.
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Выполнение &lt;span class="codebox"&gt;&lt;code class="bash"&gt;&lt;span class="kw2"&gt;sudo&lt;/span&gt; &lt;span class="kw2"&gt;dpkg&lt;/span&gt; &lt;span class="re5"&gt;--configure&lt;/span&gt; &lt;span class="re5"&gt;-a&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; ни к чему хорошему не приводит:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76438"&gt;
        &lt;div class="code text" id="p764code38"&gt;
Настраивается пакет initramfs-tools (0.92bubuntu64) ...&lt;br /&gt;
update-initramfs: deferring update (trigger activated)&lt;br /&gt;
&lt;br /&gt;
Обрабатываются триггеры для initramfs-tools ...&lt;br /&gt;
update-initramfs: Generating /boot/initrd.img-2.6.32-12-server&lt;br /&gt;
cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога&lt;br /&gt;
update-initramfs: failed for /boot/initrd.img-2.6.32-12-server&lt;br /&gt;
dpkg: подпроцесс установлен сценарий post-installation возвратил код ошибки 1
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;либо&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76439"&gt;
        &lt;div class="code text" id="p764code39"&gt;
Setting up initramfs-tools (0.92bubuntu64) ...&lt;br /&gt;
update-initramfs: deferring update (trigger activated)&lt;br /&gt;
&lt;br /&gt;
Processing triggers for initramfs-tools ...&lt;br /&gt;
update-initramfs: Generating /boot/initrd.img-2.6.32-12-server&lt;br /&gt;
cpio: ./lib/udev/firmware.sh: Cannot stat: No such file or directory&lt;br /&gt;
update-initramfs: failed for /boot/initrd.img-2.6.32-12-server&lt;br /&gt;
dpkg: subprocess installed post-installation script returned error exit status 1
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Если всё так, то вы попали по адресу. К счастью, проблема исправляется просто. Но до тех пор, пока её не исправить, обновить систему будет весьма и весьма проблематично.&lt;/p&gt;
&lt;p&gt;Для решения проблемы нужно исправить файл &lt;code&gt;/usr/share/initramfs-tools/hooks/udev&lt;/code&gt;:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76440"&gt;
        &lt;div class="code bash" id="p764code40"&gt;
&lt;span class="kw2"&gt;sudo&lt;/span&gt; &lt;span class="kw2"&gt;nano&lt;/span&gt; &lt;span class="sy0"&gt;/&lt;/span&gt;usr&lt;span class="sy0"&gt;/&lt;/span&gt;share&lt;span class="sy0"&gt;/&lt;/span&gt;initramfs-tools&lt;span class="sy0"&gt;/&lt;/span&gt;hooks&lt;span class="sy0"&gt;/&lt;/span&gt;udev
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Нужно найти строку&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76441"&gt;
        &lt;div class="code text" id="p764code41"&gt;
copy_exec /lib/udev/firmware.sh /lib/udev
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;и исправить её на&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76442"&gt;
        &lt;div class="code text" id="p764code42"&gt;
copy_exec /lib/udev/firmware /lib/udev
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;После чего нужно сохранить файл и выполнить&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76443"&gt;
        &lt;div class="code bash" id="p764code43"&gt;
&lt;span class="kw2"&gt;sudo&lt;/span&gt; &lt;span class="kw2"&gt;dpkg&lt;/span&gt; &lt;span class="re5"&gt;--configure&lt;/span&gt; &lt;span class="re5"&gt;-a&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Для любителей патчей: &lt;strong&gt;&lt;a href="http://blog.sjinks.pro/tag/patch/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  патч"&gt;патч&lt;/a&gt; для &lt;code&gt;/usr/share/initramfs-tools/hooks/udev&lt;/code&gt;&lt;/strong&gt;:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76444"&gt;
        &lt;div class="code diff" id="p764code44"&gt;
--- /usr/share/initramfs-tools/hooks/udev.orig &amp;nbsp; 2010-02-10 14:03:18.000000000 +0200&lt;br /&gt;
&lt;span class="re4"&gt;+++ /usr/share/initramfs-tools/hooks/udev &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="nu0"&gt;2010&lt;/span&gt;-02-&lt;span class="nu0"&gt;10&lt;/span&gt; &lt;span class="nu0"&gt;18&lt;/span&gt;:&lt;span class="nu0"&gt;25&lt;/span&gt;:&lt;span class="nu0"&gt;18.000000000&lt;/span&gt; +0200&lt;/span&gt;&lt;br /&gt;
&lt;span class="re6"&gt;@@ -&lt;span class="nu0"&gt;41&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; +&lt;span class="nu0"&gt;41&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; @@&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;mkdir -p $&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;DESTDIR&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;/lib/udev&lt;br /&gt;
&amp;nbsp;# 50-udev-default.rules&lt;br /&gt;
&amp;nbsp;# 50-firmware.rules&lt;br /&gt;
&lt;span class="re7"&gt;-copy_exec /lib/udev/firmware.sh /lib/udev&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+copy_exec /lib/udev/firmware /lib/udev&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;# &lt;span class="nu0"&gt;60&lt;/span&gt;-persistent-storage.rules&lt;br /&gt;
&amp;nbsp;copy_exec /lib/udev/ata_id /lib/udev&lt;br /&gt;
&amp;nbsp;copy_exec /lib/udev/usb_id /lib/udev
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;PS — а дистростроителям, ленящимся протестировать обновление, прежде чем пихать его в репозиторий, оторвал бы все выступающие части тела &lt;img src='http://blog.sjinks.pro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; &lt;a href="https://bugs.launchpad.net/ubuntu/+source/udev/+bug/519855"&gt;ссылка на официальный баг в Launchpad&lt;/a&gt;. Возможно, там предложат лучшее решение, чем я.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;© 2008–2010 &lt;a href="http://blog.sjinks.pro"&gt;Ars Longa, Vita Brevis&lt;/a&gt;. Все права защищены. Перепубликация материалов без разрешения автора запрещена.&lt;/p&gt;

&lt;p&gt;При использовании материалов блога наличие активной не закрытой от индексирования ссылки на &lt;a
href="http://blog.sjinks.pro/linux/764-update-initramfs-error-cannot-stat/"&gt;источник&lt;/a&gt; &lt;strong&gt;обязательно&lt;/strong&gt;.&lt;/p&gt;
	&lt;h4&gt;Связанные записи&lt;/h4&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/linux/777-openjdk-crashes-when-using-eclipse-in-ubuntu-lucid/" title="Сбой OpenJDK при использовании Eclipse в Ubuntu Lucid Lynx (Март 9, 2010)"&gt;Сбой OpenJDK при использовании Eclipse в Ubuntu Lucid Lynx&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/administring/112-multiple-boot-systems-time-conflicts/" title="Мультизагрузочные системы и конфликты со временем (Апрель 23, 2008)"&gt;Мультизагрузочные системы и конфликты со временем&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/linux/753-love-linux/" title="Люблю Linux (Февраль 1, 2010)"&gt;Люблю Linux&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/linux/614-bringing-skype-back-in-ubuntu-karmic-koala-64-bit/" title="Возвращаем Skype к жизни в Ubuntu Karmic Koala на 64-битной платформе (Август 10, 2009)"&gt;Возвращаем Skype к жизни в Ubuntu Karmic Koala на 64-битной платформе&lt;/a&gt; (2)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/linux/345-bringing-skype-back-in-ubuntu-intrepid-ibex-64-bit/" title="Возвращаем Skype к жизни в Ubuntu Intrepid Ibex на 64-битной платформе (Сентябрь 26, 2008)"&gt;Возвращаем Skype к жизни в Ubuntu Intrepid Ibex на 64-битной платформе&lt;/a&gt; (15)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QSb4sthYF1Giou-GNf40Nm-li-E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QSb4sthYF1Giou-GNf40Nm-li-E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QSb4sthYF1Giou-GNf40Nm-li-E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QSb4sthYF1Giou-GNf40Nm-li-E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=iHxr6xKmBiY:hoKM2FYhs3g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=iHxr6xKmBiY:hoKM2FYhs3g:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=iHxr6xKmBiY:hoKM2FYhs3g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=iHxr6xKmBiY:hoKM2FYhs3g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=iHxr6xKmBiY:hoKM2FYhs3g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=iHxr6xKmBiY:hoKM2FYhs3g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=iHxr6xKmBiY:hoKM2FYhs3g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=iHxr6xKmBiY:hoKM2FYhs3g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=iHxr6xKmBiY:hoKM2FYhs3g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=iHxr6xKmBiY:hoKM2FYhs3g:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=iHxr6xKmBiY:hoKM2FYhs3g:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=iHxr6xKmBiY:hoKM2FYhs3g:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=iHxr6xKmBiY:hoKM2FYhs3g:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=iHxr6xKmBiY:hoKM2FYhs3g:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sjblog/~4/iHxr6xKmBiY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.sjinks.pro/linux/764-update-initramfs-error-cannot-stat/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://blog.sjinks.pro/linux/764-update-initramfs-error-cannot-stat/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://blog.sjinks.pro/linux/764-update-initramfs-error-cannot-stat/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Vladimir</name>
						<uri>http://blog.sjinks.pro/</uri>
					</author>
		<title type="html"><![CDATA[SQLMon для Kohana 3]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sjblog/~3/hC0XsZB_RUo/" />
		<id>http://blog.sjinks.pro/?p=762</id>
		<updated>2010-02-13T06:10:19Z</updated>
		<published>2010-02-09T19:16:01Z</published>
		<category scheme="http://blog.sjinks.pro" term="Kohana" /><category scheme="http://blog.sjinks.pro" term="Kohana 3" /><category scheme="http://blog.sjinks.pro" term="MySQL" /><category scheme="http://blog.sjinks.pro" term="SQLMon" /><category scheme="http://blog.sjinks.pro" term="оптимизация" />		<summary type="html"><![CDATA[Мониторинг SQL-запросов в Kohana 3
Продолжая славную традицию реализации SQLMon под различные CMS/фреймворки, написал одному заказчику модуль для Kohana 3.
SQLMon для Kohana 3 интегрируется в иерархию классов Database (встраивается между классами Database_MySQL и Kohana_Database_MySQL) и реализует обёртку над методом Kohana_Database_MySQL::query(), измеряя время выполнения запроса, объём потребляемой памяти, записывая код ошибки запроса, трассу вызовов и EXPLAIN запроса [...]<hr/>
<p>© 2008–2010 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>

<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a
href="http://blog.sjinks.pro/kohana/762-sqlmon-for-kohana-3/">источник</a> <strong>обязательно</strong>.</p>]]></summary>
		<content type="html" xml:base="http://blog.sjinks.pro/kohana/762-sqlmon-for-kohana-3/">&lt;h2&gt;&lt;em&gt;Мониторинг SQL-запросов в Kohana 3&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;Продолжая славную традицию реализации SQLMon под различные CMS/фреймворки, написал одному заказчику модуль для Kohana 3.&lt;/p&gt;
&lt;p&gt;SQLMon для Kohana 3 интегрируется в иерархию классов Database (встраивается между классами &lt;code&gt;Database_&lt;a href="http://blog.sjinks.pro/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  MySQL"&gt;MySQL&lt;/a&gt;&lt;/code&gt; и &lt;code&gt;Kohana_Database_&lt;a href="http://blog.sjinks.pro/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  MySQL"&gt;MySQL&lt;/a&gt;&lt;/code&gt;) и реализует обёртку над методом &lt;span class="codebox"&gt;&lt;code class="php"&gt;Kohana_Database_MySQL&lt;span class="sy0"&gt;::&lt;/span&gt;&lt;span class="me2"&gt;query&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;, измеряя время выполнения запроса, объём потребляемой памяти, записывая код ошибки запроса, трассу вызовов и &lt;span class="codebox"&gt;&lt;code class="mysql"&gt;&lt;span class="kw1"&gt;EXPLAIN&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; запроса (причём не только для &lt;span class="codebox"&gt;&lt;code class="mysql"&gt;&lt;span class="kw1"&gt;SELECT&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;, но и &lt;span class="codebox"&gt;&lt;code class="mysql"&gt;&lt;span class="kw1"&gt;UPDATE&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;/&lt;span class="codebox"&gt;&lt;code class="mysql"&gt;&lt;span class="kw1"&gt;DELETE&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; и &lt;span class="codebox"&gt;&lt;code class="mysql"&gt;&lt;span class="kw2"&gt;INSERT&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;/&lt;span class="codebox"&gt;&lt;code class="mysql"&gt;&lt;span class="kw2"&gt;REPLACE&lt;/span&gt; &lt;span class="kw1"&gt;INTO&lt;/span&gt; … &lt;span class="kw1"&gt;AS&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; или &lt;span class="codebox"&gt;&lt;code class="mysql"&gt;&lt;span class="kw1"&gt;CREATE&lt;/span&gt; &amp;nbsp;&lt;span class="kw1"&gt;TABLE&lt;/span&gt; … &lt;span class="kw1"&gt;AS&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;) — всё то же самое, что и &lt;a href="http://blog.sjinks.pro/wordpress-plugins/sqlmon/"&gt;SQLMon для WordPress&lt;/a&gt;.&lt;span id="more-762"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Данный модуль будет полезен разработчикам для анализа производительности запросов &lt;a href="http://blog.sjinks.pro/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  MySQL"&gt;MySQL&lt;/a&gt; и поиска решений для их оптимизации. Перед использованием модуля рекомендуется прочитать статью «&lt;a href="http://dev.mysql.com/doc/refman/5.0/en/using-explain.html"&gt;Optimizing Queries with EXPLAIN&lt;/a&gt;».&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Использование модуля.&lt;/strong&gt; Модуль должен быть распакован в каталог &lt;code&gt;modules&lt;/code&gt; проекта (после распаковки появится каталог &lt;code&gt;sqlmon&lt;/code&gt;). Затем модуль должен быть активирован в файле &lt;code&gt;application/bootstrap.&lt;a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP"&gt;php&lt;/a&gt;&lt;/code&gt;. Очень важно, чтобы модуль подключался &lt;strong&gt;перед модулем &lt;code&gt;database&lt;/code&gt;&lt;/strong&gt; — это связано с &lt;a href="http://v3.kohanaphp.com/guide/about.filesystem"&gt;особенностями поиска классов в Kohana 3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Например:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76248"&gt;
        &lt;div class="code php" id="p762code48"&gt;
Kohana&lt;span class="sy0"&gt;::&lt;/span&gt;&lt;span class="me2"&gt;modules&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'sqlmon'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; MODPATH&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'sqlmon'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// SQL Monitor — обязательно перед Database&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'database'&lt;/span&gt; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; MODPATH&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'database'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &amp;nbsp; &lt;span class="co1"&gt;// Database access&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'orm'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; MODPATH&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'orm'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="co1"&gt;// Object Relationship Mapping&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'pagination'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; MODPATH&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="st_h"&gt;'pagination'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="co1"&gt;// Paging of results&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Для отображения статистики нужно выполнить&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76249"&gt;
        &lt;div class="code php" id="p762code49"&gt;
&lt;span class="kw2"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="kw1"&gt;echo&lt;/span&gt; View&lt;span class="sy0"&gt;::&lt;/span&gt;&lt;span class="me2"&gt;factory&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st_h"&gt;'sqlmon/sqlmon'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt; &lt;span class="sy1"&gt;?&amp;gt;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Результатом будет нечто вида (скриншот можно кликнуть):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.sjinks.pro/wp-content/uploads/2010/02/kohana-sqlmon.png" rel="lightbox" title="SQLMon для Kohana — пример работы"&gt;&lt;img src="http://blog.sjinks.pro/wp-content/uploads/2010/02/kohana-sqlmon-300x136.png" alt="SQLMon для Kohana — пример работы" title="SQLMon для Kohana — пример работы" width="300" height="136" class="size-medium wp-image-763" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Настройка.&lt;/strong&gt; SQLMon использует файлы конфигурации модуля Database — &lt;code&gt;config/database.&lt;a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP"&gt;php&lt;/a&gt;&lt;/code&gt;. Для контроля поведения SQLMon нужно использовать параметры:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;backtrace&lt;/code&gt; — &lt;code&gt;boolean&lt;/code&gt; (по умолчанию true) — должен ли SQLMon отображать трассу вызовов (то, что отображается синим цветом на скриншоте выше);&lt;/li&gt;
&lt;li&gt;&lt;code&gt;explain&lt;/code&gt; — &lt;code&gt;boolean&lt;/code&gt; (по умолчанию true) — должен ли SQLMon отображать план выполнения запросов (&lt;span class="codebox"&gt;&lt;code class="mysql"&gt;&lt;span class="kw1"&gt;EXPLAIN&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Пример файла конфигурации:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p76250"&gt;
        &lt;div class="code php" id="p762code50"&gt;
&lt;span class="kw2"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'default'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'type'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'mysql'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'profiling'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw4"&gt;true&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'charset'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'utf8'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'table_prefix'&lt;/span&gt; &amp;nbsp;&lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;''&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// Настройки SQLMon&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'backtrace'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw4"&gt;true&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'explain'&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw4"&gt;true&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// ---&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'connection'&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw1"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'username'&lt;/span&gt; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'root'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'password'&lt;/span&gt; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'M1dn19ht'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'hostname'&lt;/span&gt; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'localhost'&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'persistent'&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kw4"&gt;false&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st_h"&gt;'database'&lt;/span&gt; &amp;nbsp; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="st_h"&gt;'feedfetcher'&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="sy1"&gt;?&amp;gt;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://d.sjinks.pro/kohana/sqlmon.zip"&gt;Скачать SQLMon для Kohana 3&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;© 2008–2010 &lt;a href="http://blog.sjinks.pro"&gt;Ars Longa, Vita Brevis&lt;/a&gt;. Все права защищены. Перепубликация материалов без разрешения автора запрещена.&lt;/p&gt;

&lt;p&gt;При использовании материалов блога наличие активной не закрытой от индексирования ссылки на &lt;a
href="http://blog.sjinks.pro/kohana/762-sqlmon-for-kohana-3/"&gt;источник&lt;/a&gt; &lt;strong&gt;обязательно&lt;/strong&gt;.&lt;/p&gt;
	&lt;h4&gt;Связанные записи&lt;/h4&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/php/769-sqlmon-for-code-igniter/" title="SQLMon для Code Igniter (Февраль 13, 2010)"&gt;SQLMon для Code Igniter&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/575-horror-of-taxonomy-in-wordpress/" title="Ужасы таксономии в WordPress (Июнь 9, 2009)"&gt;Ужасы таксономии в WordPress&lt;/a&gt; (13)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/192-sqlmon-plugin-for-sql-query-analysis/" title="SQLMon: плагин для анализа SQL-запросов (Июнь 13, 2008)"&gt;SQLMon: плагин для анализа SQL-запросов&lt;/a&gt; (6)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress-plugins/sqlmon/" title="SQLMon: мониторинг запросов MySQL (Ноябрь 23, 2009)"&gt;SQLMon: мониторинг запросов MySQL&lt;/a&gt; (6)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/mysql/327-shit-happens/" title="Чудеса&amp;#8230; (Сентябрь 1, 2008)"&gt;Чудеса&amp;#8230;&lt;/a&gt; (3)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dWR7bk12j-hp_SC6RW29YmW8O9U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dWR7bk12j-hp_SC6RW29YmW8O9U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dWR7bk12j-hp_SC6RW29YmW8O9U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dWR7bk12j-hp_SC6RW29YmW8O9U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=hC0XsZB_RUo:zfREY_O428U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=hC0XsZB_RUo:zfREY_O428U:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=hC0XsZB_RUo:zfREY_O428U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=hC0XsZB_RUo:zfREY_O428U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=hC0XsZB_RUo:zfREY_O428U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=hC0XsZB_RUo:zfREY_O428U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=hC0XsZB_RUo:zfREY_O428U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=hC0XsZB_RUo:zfREY_O428U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=hC0XsZB_RUo:zfREY_O428U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=hC0XsZB_RUo:zfREY_O428U:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=hC0XsZB_RUo:zfREY_O428U:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=hC0XsZB_RUo:zfREY_O428U:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=hC0XsZB_RUo:zfREY_O428U:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=hC0XsZB_RUo:zfREY_O428U:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sjblog/~4/hC0XsZB_RUo" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.sjinks.pro/kohana/762-sqlmon-for-kohana-3/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://blog.sjinks.pro/kohana/762-sqlmon-for-kohana-3/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://blog.sjinks.pro/kohana/762-sqlmon-for-kohana-3/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Vladimir</name>
						<uri>http://blog.sjinks.pro/</uri>
					</author>
		<title type="html"><![CDATA[Simple Tags 1.7.4.2]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sjblog/~3/aaYVlkeaR64/" />
		<id>http://blog.sjinks.pro/?p=757</id>
		<updated>2010-02-03T10:27:37Z</updated>
		<published>2010-02-03T10:27:37Z</published>
		<category scheme="http://blog.sjinks.pro" term="Плагины WordPress" /><category scheme="http://blog.sjinks.pro" term="Simple Tags" /><category scheme="http://blog.sjinks.pro" term="utf8" /><category scheme="http://blog.sjinks.pro" term="WordPress" /><category scheme="http://blog.sjinks.pro" term="ошибка" /><category scheme="http://blog.sjinks.pro" term="патч" /><category scheme="http://blog.sjinks.pro" term="плагин" />		<summary type="html"><![CDATA[Недавно вышла очередная версия плагина Simple Tags. Проблема с UTF-8/многобайтными строками осталась (нужно бы написать автору ещё раз). Вдобавок появилась проблема с вызовом register_uninstall_hook() при каждой загрузки страницы (я исправлял аналогичную проблему с NextGen Gallery).
Из плюсов: Simple Tags 1.7.4.2 нормально работает с WordPress 3.0.
Исправленная версия плагина Simple Tags 1.7.4.2 (я убрал их исходного архива скриншоты — вряд ли кто их [...]<hr/>
<p>© 2008–2010 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>

<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a
href="http://blog.sjinks.pro/wordpress/plugins/757-simple-tags-1-7-4-2/">источник</a> <strong>обязательно</strong>.</p>]]></summary>
		<content type="html" xml:base="http://blog.sjinks.pro/wordpress/plugins/757-simple-tags-1-7-4-2/">&lt;p&gt;Недавно вышла очередная версия плагина &lt;a href="http://wordpress.org/extend/plugins/simple-tags/"&gt;Simple Tags&lt;/a&gt;. &lt;a href="http://blog.sjinks.pro/wordpress/patches/372-simple-tags-auto-link-tags-in-russian/"&gt;Проблема с UTF-8/многобайтными строками&lt;/a&gt; осталась (нужно бы написать автору ещё раз). Вдобавок появилась проблема с вызовом &lt;code&gt;register_uninstall_hook()&lt;/code&gt; при каждой загрузки страницы (я исправлял &lt;a href="http://blog.sjinks.pro/wordpress/patches/703-yet-another-nextgen-gallery-optimization/"&gt;аналогичную проблему&lt;/a&gt; с NextGen Gallery).&lt;/p&gt;
&lt;p&gt;Из плюсов: Simple Tags 1.7.4.2 нормально работает с &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;WordPress&lt;/a&gt; 3.0.&lt;span id="more-757"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://d.sjinks.pro/wordpress/simple-tags.1.7.4.2.1.zip"&gt;Исправленная версия плагина Simple Tags 1.7.4.2&lt;/a&gt;&lt;/strong&gt; (я убрал их исходного архива скриншоты — вряд ли кто их смотрит).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.sjinks.pro/tag/patch/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  патч"&gt;Патч&lt;/a&gt;:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p75752"&gt;
        &lt;div class="code diff" id="p757code52"&gt;
diff -uwdBrN simple-tags.orig/inc/base.php simple-tags/inc/base.php&lt;br /&gt;
&lt;span class="re3"&gt;--- simple-tags.orig/inc/base.php &amp;nbsp; &lt;span class="nu0"&gt;2010&lt;/span&gt;-02-02 &lt;span class="nu0"&gt;22&lt;/span&gt;:&lt;span class="nu0"&gt;39&lt;/span&gt;:&lt;span class="nu0"&gt;08.000000000&lt;/span&gt; +0200&lt;/span&gt;&lt;br /&gt;
&lt;span class="re4"&gt;+++ simple-tags/inc/base.php&amp;nbsp; &amp;nbsp; &lt;span class="nu0"&gt;2010&lt;/span&gt;-02-03 &lt;span class="nu0"&gt;11&lt;/span&gt;:&lt;span class="nu0"&gt;26&lt;/span&gt;:&lt;span class="nu0"&gt;48.000000000&lt;/span&gt; +0200&lt;/span&gt;&lt;br /&gt;
&lt;span class="re6"&gt;@@ -&lt;span class="nu0"&gt;41&lt;/span&gt;,&lt;span class="nu0"&gt;6&lt;/span&gt; +&lt;span class="nu0"&gt;41&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; @@&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;*&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp; &amp;nbsp; function installSimpleTags&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; register_uninstall_hook &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;WP_PLUGIN_DIR . '/simple-tags/simple-tags.php', array&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;'SimpleTagsBase', 'uninstall'&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $options_from_table = get_option&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt; STAGS_OPTIONS_NAME &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt; $options_from_table == false &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;resetToDefaultOptions&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
diff -uwdBrN simple-tags.orig/inc/client.php simple-tags/inc/client.php&lt;br /&gt;
&lt;span class="re3"&gt;--- simple-tags.orig/inc/client.php &lt;span class="nu0"&gt;2010&lt;/span&gt;-02-02 &lt;span class="nu0"&gt;22&lt;/span&gt;:&lt;span class="nu0"&gt;39&lt;/span&gt;:&lt;span class="nu0"&gt;08.000000000&lt;/span&gt; +0200&lt;/span&gt;&lt;br /&gt;
&lt;span class="re4"&gt;+++ simple-tags/inc/client.php&amp;nbsp; &lt;span class="nu0"&gt;2010&lt;/span&gt;-02-03 &lt;span class="nu0"&gt;11&lt;/span&gt;:&lt;span class="nu0"&gt;39&lt;/span&gt;:&lt;span class="nu0"&gt;18.000000000&lt;/span&gt; +0200&lt;/span&gt;&lt;br /&gt;
&lt;span class="re6"&gt;@@ -&lt;span class="nu0"&gt;141&lt;/span&gt;,&lt;span class="nu0"&gt;8&lt;/span&gt; +&lt;span class="nu0"&gt;141&lt;/span&gt;,&lt;span class="nu0"&gt;9&lt;/span&gt; @@&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $filtered = ''; // will filter text token by token&lt;br /&gt;
&lt;span class="re7"&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $match = &amp;quot;/\b&amp;quot; . preg_quote&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;$term_name, &amp;quot;/&amp;quot;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; . &amp;quot;\b/&amp;quot;.$case;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re7"&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $substitute = '&amp;lt;a href=&amp;quot;'.$term_link.'&amp;quot; class=&amp;quot;st_tag internal_tag&amp;quot; '.$rel.' title=&amp;quot;'. esc_attr&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt; sprintf&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt; __&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;'Posts tagged with %s', 'simpletags'&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;, $term_name &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&amp;quot;\&amp;quot;&amp;gt;$0&amp;lt;/a&amp;gt;&amp;quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $quoted = preg_quote&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;$term_name, &amp;quot;/&amp;quot;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $match = &amp;quot;/&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;\PL|\A&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&amp;quot; . preg_quote&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;$term_name, &amp;quot;/&amp;quot;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; . &amp;quot;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;\PL|\Z&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;/u&amp;quot;.$case;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $substitute = '$1&amp;lt;a href=&amp;quot;'.$term_link.'&amp;quot; class=&amp;quot;st_tag internal_tag&amp;quot; '.$rel.' title=&amp;quot;'. attribute_escape&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt; sprintf&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt; __&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;'Posts tagged with %s', 'simpletags'&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;, $term_name &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&amp;quot;\&amp;quot;&amp;gt;$2&amp;lt;/a&amp;gt;$3&amp;quot;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // for efficiency only tokenize if forced to do so&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt; $must_tokenize &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
diff -uwdBrN simple-tags.orig/simple-tags.php simple-tags/simple-tags.php&lt;br /&gt;
&lt;span class="re3"&gt;--- simple-tags.orig/simple-tags.php&amp;nbsp; &amp;nbsp; &lt;span class="nu0"&gt;2010&lt;/span&gt;-02-02 &lt;span class="nu0"&gt;22&lt;/span&gt;:&lt;span class="nu0"&gt;39&lt;/span&gt;:&lt;span class="nu0"&gt;08.000000000&lt;/span&gt; +0200&lt;/span&gt;&lt;br /&gt;
&lt;span class="re4"&gt;+++ simple-tags/simple-tags.php &lt;span class="nu0"&gt;2010&lt;/span&gt;-02-03 &lt;span class="nu0"&gt;11&lt;/span&gt;:&lt;span class="nu0"&gt;42&lt;/span&gt;:&lt;span class="nu0"&gt;14.000000000&lt;/span&gt; +0200&lt;/span&gt;&lt;br /&gt;
&lt;span class="re6"&gt;@@ -&lt;span class="nu0"&gt;3&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; +&lt;span class="nu0"&gt;3&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; @@&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;Plugin Name: Simple Tags&lt;br /&gt;
&amp;nbsp;Plugin URI: http://redmine.beapi.fr/projects/show/simple-tags&lt;br /&gt;
&amp;nbsp;Description: Extended Tagging for WordPress 2.8 and 2.9 ! Suggested Tags, Mass edit tags, Autocompletion, Tag Cloud Widgets, Related Posts, Related Tags, etc!&lt;br /&gt;
&lt;span class="re7"&gt;-Version: 1.7.4.2&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+Version: 1.7.4.2.1&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;Author: Amaury BALMER&lt;br /&gt;
&amp;nbsp;Author URI: http://www.herewithme.fr&lt;br /&gt;
&amp;nbsp;Text Domain: simpletags&lt;br /&gt;
&lt;span class="re6"&gt;@@ -&lt;span class="nu0"&gt;23&lt;/span&gt;,&lt;span class="nu0"&gt;6&lt;/span&gt; +&lt;span class="nu0"&gt;23&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; @@&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;Contributors:&lt;br /&gt;
&amp;nbsp;- Kevin Drouvin &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;kevin.drouvin@gmail.com - http://inside-dev.net&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;- Martin Modler &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;modler@webformatik.com - http://www.webformatik.com&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+- Vladimir Kolesnikov &amp;lt;vladimir at extrememember dot com&amp;gt; - http://blog.sjinks.pro/&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;Todo:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Both :&lt;br /&gt;
&lt;span class="re6"&gt;@@ -&lt;span class="nu0"&gt;53&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; +&lt;span class="nu0"&gt;54&lt;/span&gt;,&lt;span class="nu0"&gt;6&lt;/span&gt; @@&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;// Activation, uninstall&lt;br /&gt;
&amp;nbsp;register_activation_hook&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;__FILE__, array&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;'SimpleTagsBase', 'installSimpleTags'&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span class="re7"&gt;-register_uninstall_hook &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;__FILE__, array&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;'SimpleTagsBase', 'uninstall'&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;// Init ST&lt;br /&gt;
&amp;nbsp;function simple_tags_init&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;hr/&gt;
&lt;p&gt;© 2008–2010 &lt;a href="http://blog.sjinks.pro"&gt;Ars Longa, Vita Brevis&lt;/a&gt;. Все права защищены. Перепубликация материалов без разрешения автора запрещена.&lt;/p&gt;

&lt;p&gt;При использовании материалов блога наличие активной не закрытой от индексирования ссылки на &lt;a
href="http://blog.sjinks.pro/wordpress/plugins/757-simple-tags-1-7-4-2/"&gt;источник&lt;/a&gt; &lt;strong&gt;обязательно&lt;/strong&gt;.&lt;/p&gt;
	&lt;h4&gt;Связанные записи&lt;/h4&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/370-wordpress-27-and-simple-tags/" title="WordPress 2.7 и Simple Tags (Ноябрь 22, 2008)"&gt;WordPress 2.7 и Simple Tags&lt;/a&gt; (3)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/372-simple-tags-auto-link-tags-in-russian/" title="Simple Tags и автоматические ссылки меток на русском языке (Ноябрь 22, 2008)"&gt;Simple Tags и автоматические ссылки меток на русском языке&lt;/a&gt; (17)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/plugins/566-simpletags-166-and-auto-link-tags-in-russian/" title="Simple Tags 1.6.6 и автоматические ссылки меток на русском языке (Июнь 2, 2009)"&gt;Simple Tags 1.6.6 и автоматические ссылки меток на русском языке&lt;/a&gt; (14)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/" title="Учим WordPress правильно кодировать письма в UTF-8 (Сентябрь 27, 2008)"&gt;Учим WordPress правильно кодировать письма в UTF-8&lt;/a&gt; (30)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/201-patch-for-wassup-16/" title="Патч для WassUp 1.6 (Июнь 20, 2008)"&gt;Патч для WassUp 1.6&lt;/a&gt; (2)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OuaS-DpILenl6dcEbhqYUsf1SsE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OuaS-DpILenl6dcEbhqYUsf1SsE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OuaS-DpILenl6dcEbhqYUsf1SsE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OuaS-DpILenl6dcEbhqYUsf1SsE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=aaYVlkeaR64:d3NkTm4I_Q4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=aaYVlkeaR64:d3NkTm4I_Q4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=aaYVlkeaR64:d3NkTm4I_Q4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=aaYVlkeaR64:d3NkTm4I_Q4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=aaYVlkeaR64:d3NkTm4I_Q4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=aaYVlkeaR64:d3NkTm4I_Q4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=aaYVlkeaR64:d3NkTm4I_Q4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=aaYVlkeaR64:d3NkTm4I_Q4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=aaYVlkeaR64:d3NkTm4I_Q4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=aaYVlkeaR64:d3NkTm4I_Q4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=aaYVlkeaR64:d3NkTm4I_Q4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=aaYVlkeaR64:d3NkTm4I_Q4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=aaYVlkeaR64:d3NkTm4I_Q4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=aaYVlkeaR64:d3NkTm4I_Q4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sjblog/~4/aaYVlkeaR64" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.sjinks.pro/wordpress/plugins/757-simple-tags-1-7-4-2/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://blog.sjinks.pro/wordpress/plugins/757-simple-tags-1-7-4-2/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://blog.sjinks.pro/wordpress/plugins/757-simple-tags-1-7-4-2/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Vladimir</name>
						<uri>http://blog.sjinks.pro/</uri>
					</author>
		<title type="html"><![CDATA[Исправление ошибки с поддержкой VERP в PHPMailer]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sjblog/~3/tyicO3HkWk8/" />
		<id>http://blog.sjinks.pro/?p=756</id>
		<updated>2010-02-03T09:35:05Z</updated>
		<published>2010-02-02T19:50:14Z</published>
		<category scheme="http://blog.sjinks.pro" term="PHP" /><category scheme="http://blog.sjinks.pro" term="PHPMailer" /><category scheme="http://blog.sjinks.pro" term="WordPress" /><category scheme="http://blog.sjinks.pro" term="ошибка" /><category scheme="http://blog.sjinks.pro" term="патч" />		<summary type="html"><![CDATA[Великая сила пробела
PHPMailer — класс для отправки почты из PHP; используется многими известными приложениями, в том числе и WordPress.
VERP — техника, упрощающая автоматическое определение и удаление email-адресов из списков рассылки, сообщения которым не могут быть доставлены.
Поддержка VERP в PHPMailer хоть и реализована, но не работает.
Следующий лог сессии с SMTP-сервером это демонстрирует:
Out: 220 example.com ESMTP Postfix
In:  EHLO example.com
Out: 250-example.com
Out: [...]<hr/>
<p>© 2008–2010 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>

<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a
href="http://blog.sjinks.pro/php/756-fix-verp-bug-in-phpmailer/">источник</a> <strong>обязательно</strong>.</p>]]></summary>
		<content type="html" xml:base="http://blog.sjinks.pro/php/756-fix-verp-bug-in-phpmailer/">&lt;h2&gt;&lt;em&gt;Великая сила пробела&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://phpmailer.worxware.com/"&gt;PHPMailer&lt;/a&gt; — класс для отправки почты из &lt;a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP"&gt;PHP&lt;/a&gt;; используется многими известными приложениями, в том числе и &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;abbr title="Variable envelope return path"&gt;VERP&lt;/abbr&gt; — техника, упрощающая автоматическое определение и удаление email-адресов из списков рассылки, сообщения которым не могут быть доставлены.&lt;/p&gt;
&lt;p&gt;Поддержка VERP в PHPMailer хоть и реализована, но не работает.&lt;span id="more-756"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Следующий лог сессии с SMTP-сервером это демонстрирует:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p75658"&gt;
        &lt;div class="code text" id="p756code58"&gt;
Out: 220 example.com ESMTP Postfix&lt;br /&gt;
In: &amp;nbsp;EHLO example.com&lt;br /&gt;
Out: 250-example.com&lt;br /&gt;
Out: 250-PIPELINING&lt;br /&gt;
Out: 250-SIZE 10240000&lt;br /&gt;
Out: 250-ETRN&lt;br /&gt;
Out: 250-XVERP&lt;br /&gt;
Out: 250-ENHANCEDSTATUSCODES&lt;br /&gt;
Out: 250-8BITMIME&lt;br /&gt;
Out: 250 DSN&lt;br /&gt;
In: &amp;nbsp;MAIL FROM:&amp;lt;mailer@example.com&amp;gt;XVERP&lt;br /&gt;
Out: 501 5.1.7 Bad sender address syntax&lt;br /&gt;
In: &amp;nbsp;RSET&lt;br /&gt;
Out: 250 2.0.0 Ok
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Мы видим, что сервер поддерживает VERP (&lt;code&gt;250-XVERP&lt;/code&gt;), но серверу не нравится строка &lt;code&gt;MAIL FROM&lt;/code&gt;. И действительно, в ней есть маленькая &lt;a href="http://blog.sjinks.pro/tag/bug/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  ошибка"&gt;ошибка&lt;/a&gt;: перед &lt;code&gt;XVERP&lt;/code&gt; отсутствует пробел.&lt;/p&gt;
&lt;p&gt;Добавление пробела исправляет ситуацию:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p75659"&gt;
        &lt;div class="code text" id="p756code59"&gt;
220 example.com ESMTP Postfix&lt;br /&gt;
EHLO example.com&lt;br /&gt;
250-example.com&lt;br /&gt;
250-PIPELINING&lt;br /&gt;
250-SIZE 10240000&lt;br /&gt;
250-ETRN&lt;br /&gt;
250-XVERP&lt;br /&gt;
250-ENHANCEDSTATUSCODES&lt;br /&gt;
250-8BITMIME&lt;br /&gt;
250 DSN&lt;br /&gt;
MAIL FROM:&amp;lt;mailer@example.com&amp;gt; XVERP&lt;br /&gt;
250 2.1.0 Ok&lt;br /&gt;
RSET&lt;br /&gt;
250 2.0.0 Ok&lt;br /&gt;
QUIT&lt;br /&gt;
221 2.0.0 Bye
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Исправление является тривиальным: в файле class.smtp.&lt;a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP"&gt;php&lt;/a&gt; находим строку&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p75660"&gt;
        &lt;div class="code php" id="p756code60"&gt;
&lt;span class="re0"&gt;$useVerp&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;do_verp&lt;/span&gt; ? &lt;span class="st0"&gt;&amp;quot;XVERP&amp;quot;&lt;/span&gt; &lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;и заменяем её на&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p75661"&gt;
        &lt;div class="code php" id="p756code61"&gt;
&lt;span class="re0"&gt;$useVerp&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$this&lt;/span&gt;&lt;span class="sy0"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="me1"&gt;do_verp&lt;/span&gt; ? &lt;span class="st0"&gt;&amp;quot; XVERP&amp;quot;&lt;/span&gt; &lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Для тех, кому проще иметь дело с патчами:&lt;/p&gt;
          
&lt;div class="codebox"&gt;
    &lt;div class="the_code" style="" id="p75662"&gt;
        &lt;div class="code diff" id="p756code62"&gt;
--- class.smtp.php&lt;br /&gt;
&lt;span class="re4"&gt;+++ class.smtp.php.new&lt;/span&gt;&lt;br /&gt;
&lt;span class="re6"&gt;@@ -&lt;span class="nu0"&gt;604&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; +&lt;span class="nu0"&gt;604&lt;/span&gt;,&lt;span class="nu0"&gt;7&lt;/span&gt; @@&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;span class="re7"&gt;- &amp;nbsp; &amp;nbsp;$useVerp = &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;$this-&amp;gt;do_verp ? &amp;quot;XVERP&amp;quot; : &amp;quot;&amp;quot;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="re8"&gt;+ &amp;nbsp; &amp;nbsp;$useVerp = &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;$this-&amp;gt;do_verp ? &amp;quot; XVERP&amp;quot; : &amp;quot;&amp;quot;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;fputs&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;$this-&amp;gt;smtp_conn,&amp;quot;MAIL FROM:&amp;lt;&amp;quot; . $from . &amp;quot;&amp;gt;&amp;quot; . $useVerp . $this-&amp;gt;CRLF&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;$rply = $this-&amp;gt;get_lines&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="http://blog.sjinks.pro/tag/patch/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  патч"&gt;Патч&lt;/a&gt; для &lt;a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress"&gt;WordPress&lt;/a&gt; можно найти &lt;a href="http://core.trac.wordpress.org/ticket/11988"&gt;здесь&lt;/a&gt;.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;© 2008–2010 &lt;a href="http://blog.sjinks.pro"&gt;Ars Longa, Vita Brevis&lt;/a&gt;. Все права защищены. Перепубликация материалов без разрешения автора запрещена.&lt;/p&gt;

&lt;p&gt;При использовании материалов блога наличие активной не закрытой от индексирования ссылки на &lt;a
href="http://blog.sjinks.pro/php/756-fix-verp-bug-in-phpmailer/"&gt;источник&lt;/a&gt; &lt;strong&gt;обязательно&lt;/strong&gt;.&lt;/p&gt;
	&lt;h4&gt;Связанные записи&lt;/h4&gt;
	&lt;ul class="st-related-posts"&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/222-main-sources-of-invalid-markup-in-wordpress/" title="Основные источники неправильной разметки в WordPress (Июль 7, 2008)"&gt;Основные источники неправильной разметки в WordPress&lt;/a&gt; (11)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/mysql/381-study-mysql/" title="Можно ли написать серьёзное web-приложение с использованием MySQL, но без знания принципов работы MySQL? (Ноябрь 24, 2008)"&gt;Можно ли написать серьёзное web-приложение с использованием MySQL, но без знания принципов работы MySQL?&lt;/a&gt; (29)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/372-simple-tags-auto-link-tags-in-russian/" title="Simple Tags и автоматические ссылки меток на русском языке (Ноябрь 22, 2008)"&gt;Simple Tags и автоматические ссылки меток на русском языке&lt;/a&gt; (17)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/" title="Учим WordPress правильно кодировать письма в UTF-8 (Сентябрь 27, 2008)"&gt;Учим WordPress правильно кодировать письма в UTF-8&lt;/a&gt; (30)&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.sjinks.pro/wordpress/patches/495-deleting-parent-comment-causes-child-comments-to-be-incorrectly-displayed/" title="Удаление родительского комментария приводит к неправильному отображению дочерних комментариев (Февраль 1, 2009)"&gt;Удаление родительского комментария приводит к неправильному отображению дочерних комментариев&lt;/a&gt; (10)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jFnx3zoBp_1U2eDFhC-JgUxJe_A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jFnx3zoBp_1U2eDFhC-JgUxJe_A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jFnx3zoBp_1U2eDFhC-JgUxJe_A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jFnx3zoBp_1U2eDFhC-JgUxJe_A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=tyicO3HkWk8:dlJLJ7Ciu5I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=tyicO3HkWk8:dlJLJ7Ciu5I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=tyicO3HkWk8:dlJLJ7Ciu5I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=tyicO3HkWk8:dlJLJ7Ciu5I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=tyicO3HkWk8:dlJLJ7Ciu5I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=tyicO3HkWk8:dlJLJ7Ciu5I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=tyicO3HkWk8:dlJLJ7Ciu5I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=tyicO3HkWk8:dlJLJ7Ciu5I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=tyicO3HkWk8:dlJLJ7Ciu5I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=tyicO3HkWk8:dlJLJ7Ciu5I:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=tyicO3HkWk8:dlJLJ7Ciu5I:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?i=tyicO3HkWk8:dlJLJ7Ciu5I:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=tyicO3HkWk8:dlJLJ7Ciu5I:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/sjblog?a=tyicO3HkWk8:dlJLJ7Ciu5I:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/sjblog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sjblog/~4/tyicO3HkWk8" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.sjinks.pro/php/756-fix-verp-bug-in-phpmailer/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.sjinks.pro/php/756-fix-verp-bug-in-phpmailer/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.sjinks.pro/php/756-fix-verp-bug-in-phpmailer/</feedburner:origLink></entry>
	</feed>
