<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии: Оптимизация блога: уменьшите количество запросов к базе данных</title>
	<atom:link href="http://blogproblog.com/php-mysql-optimization/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogproblog.com/php-mysql-optimization/</link>
	<description>неКраткое описание про блоги и блоггеров</description>
	<lastBuildDate>Mon, 09 Apr 2012 12:14:33 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Автор: Dmitriy Donchenko</title>
		<link>http://blogproblog.com/php-mysql-optimization/#comment-18475</link>
		<dc:creator>Dmitriy Donchenko</dc:creator>
		<pubDate>Fri, 02 Jan 2009 15:00:31 +0000</pubDate>
		<guid isPermaLink="false">http://blogproblog.com/2008/01/30/php-mysql-optimization/#comment-18475</guid>
		<description>Великолепно, Владислав! Огромное спасибо.</description>
		<content:encoded><![CDATA[<p>Великолепно, Владислав! Огромное спасибо.</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Владислав</title>
		<link>http://blogproblog.com/php-mysql-optimization/#comment-18466</link>
		<dc:creator>Владислав</dc:creator>
		<pubDate>Fri, 02 Jan 2009 14:49:09 +0000</pubDate>
		<guid isPermaLink="false">http://blogproblog.com/2008/01/30/php-mysql-optimization/#comment-18466</guid>
		<description>Замена функции на статику, теоретически, сможет разгрузить сервер, но нагрузка уменьшится на сотые доли процента - это как капля в море ))) Это тоже самое что использовать echo вместо print, так как echo выполняется на 0,00002 секунды быстрее )) 

Вот и функция которая управляет массивом опций (functions.php 470):
 
function wp_load_alloptions() {
...
if ( !$alloptions_db = $wpdb-&gt;get_results( &quot;SELECT option_name, option_value FROM $wpdb-&gt;options WHERE autoload = &#039;yes&#039;&quot; ) ) 
// ГЛАВНЫЙ ЗАПРОС КОТОРЫЙ ЗАБИРАЕТ ОПЦИИ ИЗ БАЗЫ ДАННЫХ
...
$alloptions = array();
foreach ( (array) $alloptions_db as $o )
$alloptions[$o-&gt;option_name] = $o-&gt;option_value;
		
wp_cache_add( &#039;alloptions&#039;, $alloptions, &#039;options&#039; ); 
// ОПЦИИ ПОМЕЩАЮТСЯ В КЭШ
	}
	return $alloptions;
}

Теперь когда все опции в кэше, вызываем скажем функцию bloginfo(’description’) она вызывает функцию get_option (&#039;description&#039;), которая в свою очередь содержит кэш-функцию wp_cache_get( $setting, &#039;options&#039; ) где $setting = &#039;description&#039;. Функция заходит в кеш (который есть просто многомерный массив), получает доступ к элементу &#039;options&#039; котрый тоже является массивом который содержит все опции (description, stylesheet_url, version, site_url etc.) и выбирает оттуда значение ключа description, который в конечном итоге отображается на странице. Другими словами данные из БД запрошены при инициализации движкка, ещё ДО того как вы их запросите их посредством функций упомянутых в вашем посте, поэтому написав хоть миллион раз bloginfo(’название опции’) вы будете получать каждый раз данные из кеша, не затронув при этом базу данных. 

Так-то ))</description>
		<content:encoded><![CDATA[<p>Замена функции на статику, теоретически, сможет разгрузить сервер, но нагрузка уменьшится на сотые доли процента&nbsp;&mdash; это как капля в море ))) Это тоже самое что использовать echo вместо print, так как echo выполняется на 0,00002 секунды быстрее )) </p><p>Вот и функция которая управляет массивом опций (functions.php 470):</p><p>function wp_load_alloptions () {</p><p>...</p><p>if ( !$alloptions_db = $wpdb-&gt;get_results ( &laquo;SELECT option_name, option_value FROM $wpdb-&gt;options WHERE autoload = &#39;yes&#39;&raquo; ) ) </p><p>// ГЛАВНЫЙ ЗАПРОС КОТОРЫЙ ЗАБИРАЕТ ОПЦИИ ИЗ БАЗЫ ДАННЫХ</p><p>...</p><p>$alloptions = array ();</p><p>foreach ( (array) $alloptions_db as $o )</p><p>$alloptions[$o-&gt;option_name] = $o-&gt;option_value;</p><p>wp_cache_add ( &#39;alloptions&#39;, $alloptions, &#39;options&#39; ); </p><p>// ОПЦИИ ПОМЕЩАЮТСЯ В КЭШ</p><p>}</p><p>return $alloptions;</p><p>}</p><p>Теперь когда все опции в кэше, вызываем скажем функцию bloginfo (’description’) она вызывает функцию get_option (&#39;description&#39;), которая в свою очередь содержит кэш-функцию wp_cache_get ( $setting, &#39;options&#39; ) где $setting = &#39;description&#39;. Функция заходит в кеш (который есть просто многомерный массив), получает доступ к элементу &#39;options&#39; котрый тоже является массивом который содержит все опции (description, stylesheet_url, version, site_url etc.) и выбирает оттуда значение ключа description, который в конечном итоге отображается на странице. Другими словами данные из БД запрошены при инициализации движкка, ещё ДО того как вы их запросите их посредством функций упомянутых в вашем посте, поэтому написав хоть миллион раз bloginfo (’название опции’) вы будете получать каждый раз данные из кеша, не затронув при этом базу данных. </p><p>Так-то ))</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Dmitriy Donchenko</title>
		<link>http://blogproblog.com/php-mysql-optimization/#comment-18267</link>
		<dc:creator>Dmitriy Donchenko</dc:creator>
		<pubDate>Thu, 01 Jan 2009 16:10:13 +0000</pubDate>
		<guid isPermaLink="false">http://blogproblog.com/2008/01/30/php-mysql-optimization/#comment-18267</guid>
		<description>Владислав, Вы ведь не станете спорить, что заменив функции по данному руководству, на статические строки, Вы уменьшите нагрузку на сервер?

И интересно что это за запрос такой? Можете описать подробнее для неграмотных?</description>
		<content:encoded><![CDATA[<p>Владислав, Вы ведь не станете спорить, что заменив функции по данному руководству, на статические строки, Вы уменьшите нагрузку на сервер?</p><p>И интересно что это за запрос такой? Можете описать подробнее для неграмотных?</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Владислав</title>
		<link>http://blogproblog.com/php-mysql-optimization/#comment-18262</link>
		<dc:creator>Владислав</dc:creator>
		<pubDate>Thu, 01 Jan 2009 15:14:13 +0000</pubDate>
		<guid isPermaLink="false">http://blogproblog.com/2008/01/30/php-mysql-optimization/#comment-18262</guid>
		<description>Хм...ну что же сказать насчёт этой статьи...заголовок конечно правильный, только вот содержание выдаёт в авторе человека которые не знает архитектуру wp (без обид). Например вот
   1. 
   2. &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;; charset=” /&gt;
   3. &lt;meta name=&quot;generator&quot; content=&quot;WordPress ” /&gt;
   4. &lt;link rel=&quot;stylesheet&quot; href=&quot;” type=”text/css” media=”screen” /&gt;
   5. &lt;link rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot; title=&quot;RSS 2.0&quot; href=&quot;” /&gt;


эти все данные уже в оперативной памяти сервера ДО того как вы их запрашиваете через , так как при инициализации скрипта проходит 1 запрос который забирает из БД почти ВСЕ опции и настройки вордпресса, после чего они попадают в кеш, откуда их можно вызывать хоть миллион раз. Другими словами эта часть вашей статьи практически бесполезна.</description>
		<content:encoded><![CDATA[<p>Хм...ну что же сказать насчёт этой статьи...заголовок конечно правильный, только вот содержание выдаёт в авторе человека которые не знает архитектуру wp (без обид). Например вот</p><p>1. </p><p>2. &lt;meta http-equiv="Content-Type" content="; charset=” /&gt;</p><p>3. &lt;meta name="generator" content="WordPress ” /&gt;</p><p>4. &lt;link rel="stylesheet" href="” type=”text/css” media=”screen” /&gt;</p><p>5. &lt;link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="” /&gt;</p><p>эти все данные уже в оперативной памяти сервера ДО того как вы их запрашиваете через , так как при инициализации скрипта проходит 1 запрос который забирает из БД почти ВСЕ опции и настройки вордпресса, после чего они попадают в кеш, откуда их можно вызывать хоть миллион раз. Другими словами эта часть вашей статьи практически бесполезна.</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Ирина</title>
		<link>http://blogproblog.com/php-mysql-optimization/#comment-17816</link>
		<dc:creator>Ирина</dc:creator>
		<pubDate>Tue, 30 Dec 2008 02:35:47 +0000</pubDate>
		<guid isPermaLink="false">http://blogproblog.com/2008/01/30/php-mysql-optimization/#comment-17816</guid>
		<description>Я совсем не программист, а на Вашем блоге все доходчиво  объясняется.</description>
		<content:encoded><![CDATA[<p>Я совсем не программист, а на Вашем блоге все доходчиво  объясняется.</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Антон</title>
		<link>http://blogproblog.com/php-mysql-optimization/#comment-13445</link>
		<dc:creator>Антон</dc:creator>
		<pubDate>Sun, 23 Nov 2008 12:16:36 +0000</pubDate>
		<guid isPermaLink="false">http://blogproblog.com/2008/01/30/php-mysql-optimization/#comment-13445</guid>
		<description>Да, кеширование однозначно поможет. Собственно его для этого и придумали)
Оптимальное количество запросов к базе это отсутствие запросов к базе)) Не переживайте за число запросов. В случае необходимости всегда можно переехать на выделенный сервер. Блоги чаще тормозят от оверселинга, нежели от числа запросов.</description>
		<content:encoded><![CDATA[<p>Да, кеширование однозначно поможет. Собственно его для этого и придумали)</p><p>Оптимальное количество запросов к базе это отсутствие запросов к базе)) Не переживайте за число запросов. В случае необходимости всегда можно переехать на выделенный сервер. Блоги чаще тормозят от оверселинга, нежели от числа запросов.</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Ночной Кошмар</title>
		<link>http://blogproblog.com/php-mysql-optimization/#comment-6331</link>
		<dc:creator>Ночной Кошмар</dc:creator>
		<pubDate>Tue, 24 Jun 2008 18:25:03 +0000</pubDate>
		<guid isPermaLink="false">http://blogproblog.com/2008/01/30/php-mysql-optimization/#comment-6331</guid>
		<description>Многие блоги на WP отправляют порядка 20-30 запросов к базе. Те, кто пользуются плагинами для составления карты сайта(которая для людей а не для гугла) имеют порядка сотни запросов. Некоторые портальные темы для WP генерируют 40-60 запросов. А есть какое-то оптимальное количество запросов к базе? Просто нашел как раз тему симпатичную, но при ее установке получаем 46 запросов... По моему многовато. Или можно не беспокоиться? Спасает ли в таких случаях плагин для кеширования?</description>
		<content:encoded><![CDATA[<p>Многие блоги на WP отправляют порядка 20-30 запросов к базе. Те, кто пользуются плагинами для составления карты сайта(которая для людей а не для гугла) имеют порядка сотни запросов. Некоторые портальные темы для WP генерируют 40-60 запросов. А есть какое-то оптимальное количество запросов к базе? Просто нашел как раз тему симпатичную, но при ее установке получаем 46 запросов... По моему многовато. Или можно не беспокоиться? Спасает ли в таких случаях плагин для кеширования?</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: ezoterik</title>
		<link>http://blogproblog.com/php-mysql-optimization/#comment-1292</link>
		<dc:creator>ezoterik</dc:creator>
		<pubDate>Fri, 14 Mar 2008 14:32:21 +0000</pubDate>
		<guid isPermaLink="false">http://blogproblog.com/2008/01/30/php-mysql-optimization/#comment-1292</guid>
		<description>Спасибо! Было бы интересно увидеть еще продолжение серии про оптимизацию блога на уровне MySQL, Apache и PHP.</description>
		<content:encoded><![CDATA[<p>Спасибо! Было бы интересно увидеть еще продолжение серии про оптимизацию блога на уровне MySQL, Apache и PHP.</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: oldvovk</title>
		<link>http://blogproblog.com/php-mysql-optimization/#comment-685</link>
		<dc:creator>oldvovk</dc:creator>
		<pubDate>Thu, 14 Feb 2008 02:07:56 +0000</pubDate>
		<guid isPermaLink="false">http://blogproblog.com/2008/01/30/php-mysql-optimization/#comment-685</guid>
		<description>href=&quot;http://blogproblog.com/wp-content/themes/default/style.css”

не обязательную часть можно и убрать, оставив

href=&quot;/wp-content/themes/default/style.css”</description>
		<content:encoded><![CDATA[<p>href="http://blogproblog.com/wp-content/themes/default/style.css”</p><p>не обязательную часть можно и убрать, оставив</p><p>href="/wp-content/themes/default/style.css”</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Евгений</title>
		<link>http://blogproblog.com/php-mysql-optimization/#comment-598</link>
		<dc:creator>Евгений</dc:creator>
		<pubDate>Sun, 03 Feb 2008 12:28:46 +0000</pubDate>
		<guid isPermaLink="false">http://blogproblog.com/2008/01/30/php-mysql-optimization/#comment-598</guid>
		<description>Как программист, я бы посоветовал изменять функцию get_bloginfo(...), которая вызывается из bloginfo(...) (файл wp-includes/general-template.php). Здесь можно за 1-2 запроса, плюс немного грубого кода получить все опции, которые там получают и засунуть их в static переменную (она будет хеш таблицей). Проверяем, если эта переменная не пустая, то возвращаем нужное значение, если пустая, то делаем эти пару запросов и инициализируем эту переменную.

Вот так вот я бы сказал и если бы не пользовался все время своими скриптами, а вордпресом, непример, то еще бы и написал, как это должно быть в пхп коде :)</description>
		<content:encoded><![CDATA[<p>Как программист, я бы посоветовал изменять функцию get_bloginfo (...), которая вызывается из bloginfo (...) (файл wp-includes/general-template.php). Здесь можно за 1-2 запроса, плюс немного грубого кода получить все опции, которые там получают и засунуть их в static переменную (она будет хеш таблицей). Проверяем, если эта переменная не пустая, то возвращаем нужное значение, если пустая, то делаем эти пару запросов и инициализируем эту переменную.</p><p>Вот так вот я бы сказал и если бы не пользовался все время своими скриптами, а вордпресом, непример, то еще бы и написал, как это должно быть в пхп коде <img src='http://blogproblog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
</channel>
</rss>

