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

<channel>
	<title>Блог Дениса Колисниченко&#187; Функция преобразования CP1251 в UTF8 | Блог Дениса Колисниченко</title>
	<atom:link href="http://dkws.net/archives/category/php/feed" rel="self" type="application/rss+xml" />
	<link>http://dkws.net</link>
	<description>Еще один блог ни о чем</description>
	<lastBuildDate>Tue, 07 Feb 2012 07:00:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Функция преобразования CP1251 в UTF8</title>
		<link>http://dkws.net/archives/1261</link>
		<comments>http://dkws.net/archives/1261#comments</comments>
		<pubDate>Mon, 20 Dec 2010 07:36:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[UTF8]]></category>

		<guid isPermaLink="false">http://dkws.net/?p=1261</guid>
		<description><![CDATA[
function cp1251_to_utf8 ($txt)  {
    $in_arr = array (
        chr(208), chr(192), chr(193), chr(194),
        chr(195), chr(196), chr(197), chr(168),
        chr(198), chr(199), chr(200), chr(201),
        chr(202), chr(203), chr(204), [...]]]></description>
			<content:encoded><![CDATA[<pre>
function cp1251_to_utf8 ($txt)  {
    $in_arr = array (
        chr(208), chr(192), chr(193), chr(194),
        chr(195), chr(196), chr(197), chr(168),
        chr(198), chr(199), chr(200), chr(201),
        chr(202), chr(203), chr(204), chr(205),
        chr(206), chr(207), chr(209), chr(210),
        chr(211), chr(212), chr(213), chr(214),
        chr(215), chr(216), chr(217), chr(218),
        chr(219), chr(220), chr(221), chr(222),
        chr(223), chr(224), chr(225), chr(226),
        chr(227), chr(228), chr(229), chr(184),
        chr(230), chr(231), chr(232), chr(233),
        chr(234), chr(235), chr(236), chr(237),
        chr(238), chr(239), chr(240), chr(241),
        chr(242), chr(243), chr(244), chr(245),
        chr(246), chr(247), chr(248), chr(249),
        chr(250), chr(251), chr(252), chr(253),
        chr(254), chr(255)
    );   

    $out_arr = array (
        chr(208).chr(160), chr(208).chr(144), chr(208).chr(145),
        chr(208).chr(146), chr(208).chr(147), chr(208).chr(148),
        chr(208).chr(149), chr(208).chr(129), chr(208).chr(150),
        chr(208).chr(151), chr(208).chr(152), chr(208).chr(153),
        chr(208).chr(154), chr(208).chr(155), chr(208).chr(156),
        chr(208).chr(157), chr(208).chr(158), chr(208).chr(159),
        chr(208).chr(161), chr(208).chr(162), chr(208).chr(163),
        chr(208).chr(164), chr(208).chr(165), chr(208).chr(166),
        chr(208).chr(167), chr(208).chr(168), chr(208).chr(169),
        chr(208).chr(170), chr(208).chr(171), chr(208).chr(172),
        chr(208).chr(173), chr(208).chr(174), chr(208).chr(175),
        chr(208).chr(176), chr(208).chr(177), chr(208).chr(178),
        chr(208).chr(179), chr(208).chr(180), chr(208).chr(181),
        chr(209).chr(145), chr(208).chr(182), chr(208).chr(183),
        chr(208).chr(184), chr(208).chr(185), chr(208).chr(186),
        chr(208).chr(187), chr(208).chr(188), chr(208).chr(189),
        chr(208).chr(190), chr(208).chr(191), chr(209).chr(128),
        chr(209).chr(129), chr(209).chr(130), chr(209).chr(131),
        chr(209).chr(132), chr(209).chr(133), chr(209).chr(134),
        chr(209).chr(135), chr(209).chr(136), chr(209).chr(137),
        chr(209).chr(138), chr(209).chr(139), chr(209).chr(140),
        chr(209).chr(141), chr(209).chr(142), chr(209).chr(143)
    );   

    $txt = str_replace($in_arr,$out_arr,$txt);
    return $txt;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://dkws.net/archives/1261/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перенос Drupal с локального Denver&#8217;а на хостинг</title>
		<link>http://dkws.net/archives/731</link>
		<comments>http://dkws.net/archives/731#comments</comments>
		<pubDate>Thu, 13 May 2010 09:35:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Блогосфера]]></category>
		<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://dkws.net/?p=731</guid>
		<description><![CDATA[Хорошо протестировав свой drupal-сайт на денвере, настроив все нужные модули и нарисовав красивый дизайн самое время перенести сайт с денвера, из закоулков  жесткого диска на хороший хостинг, &#171;показать его миру&#187;.
Вот о том, как это сделать и пойдет сегодня речь.
Процесс переноса сайта с денвера на хостинг рассмотрим детально на примере панели управления cPanel

cPanel — одна [...]]]></description>
			<content:encoded><![CDATA[<p>Хорошо протестировав свой <strong>drupal</strong>-сайт на денвере, настроив все нужные модули и нарисовав красивый дизайн самое время <strong><em>перенести сайт с денвера</em></strong>, из закоулков  жесткого диска на хороший хостинг, &laquo;показать его миру&raquo;.<br />
Вот о том, как это сделать и пойдет сегодня речь.<br />
Процесс переноса сайта с денвера на хостинг рассмотрим детально на примере панели управления cPanel</p>
<ul>
<li>cPanel — одна из лучших, а может и лучшая из панелей управления веб-хостингом. Она является стандартом «де-факто», в мире хостинга, т.к. предоставляет интуитивно понятный интерфейс, чёткую логику управления, использование шаблонов а также переведена на 25 языков.</li>
</ul>
<p><strong>Создание БД и ее настройка.</strong><br />
Для создания базы данных, в которую мы немного позже перенесем свою базу (с денвера), нужно найти в cPanel ярлык доступа к управлению базами данных.<br />
Выглядеть он примерно будет так:</p>
<div id="nodeImages1"><img src="http://www.wisecat.ru/files/ex51.gif" alt="cPanel 11, базы данных MySQL" /></div>
<p>На открывшейся странице вводим имя новой базы данных &#8211; &laquo;myDrupalDB&raquo; и нажимаем &laquo;создать базу данных&raquo;</p>
<div id="nodeImages2"><img src="http://www.wisecat.ru/files/ex52.png" alt="Создание новой базы данных в cPanel 11" /></div>
<p>Вы должны увидеть сообщение о том, что база была успешно создана. Теперь возвращаемся на предыдущую страницу и создаем нового пользователя баз данных &laquo;myUser&raquo; с паролем &laquo;myPass&raquo; ( конечно замените пароль на свой -) ).<br />
Нажимаем &laquo;создать пользователя&raquo;</p>
<div id="nodeImages3"><img src="http://www.wisecat.ru/files/ex53.png" alt="Создание нового пользователя в cPanel 11" /></div>
<p>Как и в предыдущем случае вы увидите сообщение об успешном создании пользователя.<br />
Снова вернемся на страницу назад и определим доступ пользователя к базе данных <strong>drupal</strong>. Для этого из списка пользователей выберем &laquo;myUser&raquo;, из списка бд выберем &laquo;myDrupalDB&raquo; и нажмем &laquo;Добавить&raquo;</p>
<div id="nodeImages4"><img src="http://www.wisecat.ru/files/ex54.png" alt="Назначение пользователя базе данных в cPanel 11" /></div>
<p>На открывшейся странице определим права пользователя, просто установив галочку &laquo;ALL PRIVILEGES&raquo; (Все привелегии) и нажмем &laquo;Внести изменения&raquo;.</p>
<div id="nodeImages5"><img src="http://www.wisecat.ru/files/ex55.png" alt="Определение прав пользователя базы данных в cPanel 11" /></div>
<p><strong>Перенос файлов</strong></p>
<p>Для переноса файлов <strong>drupal</strong>, вы можете воспользоваться любым FTP-менеджером. Я, к примеру, отдаю предпочтение FileZilla, но это дело вкуса, а о вкусах как известно не спорят. Главное &#8211; перенести все файлы друпала в нужную папку, &laquo;корневую директорию&raquo;. Какая именно директория у вас корневая, вы можете узнать<br />
а) На главной странице cPanel (обычно в левом меню пункт &laquo;домашняя директория&raquo;)<br />
б) Из письма, которое обычно присылает хостер после регистрации<br />
в) У техподдержки хостера<br />
<span style="text-decoration: line-through;">г) Методом научного тыка </span></p>
<p>Однако, перед загрузкой файлов drupal на сервер, необходимо внести изменения в файл settings.php<br />
&#8230;\www\sites\default\settings.php</p>
<p>Исправляем:</p>
<p># $base_url = &#8216;http://www.example.com&#8217;;  // NO trailing slash!<br />
на<br />
$base_url = &#8216;http://www.ваш_домен.com&#8217;;<br />
а также строку номер 94 на<br />
$db_url = &#8216;mysql://myUser:myPass@localhost/myDrupalDB&#8217;;<br />
Где myUser,myPass и myDrupalDB &#8211; данные, которые вы указывали при создании бд и пользователя.<br />
localhost &#8211; верно для подавляющего большинства хостеров, однако бывают и исключения, например masterhost.<br />
Теперь смело загружайте все файлы <em>drupal</em> на сервер.</p>
<p><strong>Перенос (импорт) базы данных drupal</strong><br />
Последний шаг &#8211; перенос базы с помощью phpMyAdmin.<br />
Запустив предварительно денвер, открываем localhost/Tools/phpMyAdmin/, выбираем используемую базу и переходим в раздел &laquo;Экспорт&raquo;.<br />
Из настроек экспорта нам необходимо поменять только вариант упаковки в &laquo;нет&raquo; на &laquo;zip&raquo;.</p>
<div id="nodeImages6"><img src="http://www.wisecat.ru/files/ex56.png" alt="Экспотр базы данных при помощи phpmyadmin" /></div>
<p>После того, как вы кликнете &laquo;ок&raquo;, начнется загрузка zip-архива. Этот архив &#8211; и есть ваша база данных.</p>
<p>Осталось всего ничего &#8211; скопировать только что сохраненную вами базу в недавно созданную. Для этого в панели управления найдите ярлык phpMyAdmin</p>
<div id="nodeImages7"><img src="http://www.wisecat.ru/files/ex57.gif" alt="Импорт базы данных при помощи phpMyAdmin" /></div>
<p>На открывшейся странице выберете базу данных &laquo;myDrupalDB&raquo; и перейдите в раздел &laquo;Импорт&raquo;, где укажите сохраненный вами файл с дампом базы данных. Когда вы кликнете ок, начнется импорт. Если ваша база перешегнула порог в несколько мегабайт, вам вероятно необходимо будет возобновлять процесс импорта (просто следуйте появляющимся инструкциям).</p>
<p>И вот, все закончено. Поздравляю, вы только что <em>перенесли сайт на drupal с денвера на хостинг</em>!<br />
Не забудьте,если необходимо, изменить именные сервера (ns-сервера) в панели управления доменом и помните, что на делегирование домена, а также на полное обновление именных серверов может уйти до двух суток.</p>
<p>Оригинал http://www.wisecat.ru/2008/7/13/perenos-drupal-s-denvera-na-khosting</p>
]]></content:encoded>
			<wfw:commentRss>http://dkws.net/archives/731/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MicroBlog и визуальный редактор SPAW2</title>
		<link>http://dkws.net/archives/472</link>
		<comments>http://dkws.net/archives/472#comments</comments>
		<pubDate>Mon, 05 Apr 2010 13:44:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Блогосфера]]></category>
		<category><![CDATA[Общее]]></category>
		<category><![CDATA[exclusive]]></category>

		<guid isPermaLink="false">http://dkws.net/?p=472</guid>
		<description><![CDATA[Сейчас пойдет речь о том, как прикрутить визуальный редактор SPAW2 к блоговому движку MicroBlog.
Первым делом загрузите визуальный редактор SPAW2 по адресу:
http://www.spaweditor.com
Вам нужно загрузить вторую версию, а не первую (файл spaw-php-2081-gpl.zip, 501 Кб). Распакуйте архив в каталог, в котором у вас размещен микроблог. Иерархия каталогов получится примерно такая:
data		&#60;каталог&#62;
img		&#60;каталог&#62;
plugins	&#60;каталог&#62;
spaw2		&#60;каталог&#62;
admin.php	&#60;файл&#62;
index.php	&#60;файл&#62;
...

Зайдите в каталог spaw2/config. В нем вы найдете файл [...]]]></description>
			<content:encoded><![CDATA[<p>Сейчас пойдет речь о том, как прикрутить визуальный редактор SPAW2 к блоговому движку MicroBlog.<br />
Первым делом загрузите визуальный редактор SPAW2 по адресу:</p>
<p>http://www.spaweditor.com</p>
<p>Вам нужно загрузить вторую версию, а не первую (файл spaw-php-2081-gpl.zip, 501 Кб). Распакуйте архив в каталог, в котором у вас размещен микроблог. Иерархия каталогов получится примерно такая:</p>
<p><code>data		&lt;каталог&gt;<br />
img		&lt;каталог&gt;<br />
plugins	&lt;каталог&gt;<br />
spaw2		&lt;каталог&gt;<br />
admin.php	&lt;файл&gt;<br />
index.php	&lt;файл&gt;<br />
...</code></p>
<p><span id="more-472"></span></p>
<p>Зайдите в каталог spaw2/config. В нем вы найдете файл config.default.php. Этот файл нужно переименовать в config.php. После переименования откройте его в любом текстовом редакторе и раскомментируйте следующую строку:</p>
<p><code>SpawConfig::setStaticConfigItem('SPAW_DIR', '/spaw2/');</code></p>
<p>Это путь к SPAW2. Если вы хотите поместить файлы редактора в каталог, отличный от /spaw2/, нужно указать здесь новое имя каталога.<br />
Затем русифицируем наш редактор. Найдите следующие строки:</p>
<p><code>SpawConfig::setStaticConfigItem('default_lang','en');<br />
SpawConfig::setStaticConfigItem('default_output_charset','');</code></p>
<p>Отредактируйте эти строки так:</p>
<p><code>SpawConfig::setStaticConfigItem('default_lang','ru');<br />
SpawConfig::setStaticConfigItem('default_output_charset','windows-1251');</code></p>
<p>Вторая строка задает кодировку текста. Кодировка должна совпадать с кодировкой, указанной в файле конфигурации микроблога (settings.php). Мы используем кодировку Windows-1251. Но если вам нужна кодировка UTF-8, то не забудьте изменить ее тут и в файле settings.php.<br />
Следующие две строки задают ширину (по умолчанию 100%) и высоту редактора (200 пикселей). Ширину лучше не изменять, а вот высоту можно установить по своему усмотрению. Мне нравится высота в 400 пикселей.</p>
<p><code>SpawConfig::setStaticConfigItem('default_width','100%');<br />
SpawConfig::setStaticConfigItem('default_height','200px');</code></p>
<p>Далее найдите блок каталогов:</p>
<p><code>// directories<br />
SpawConfig::setStaticConfigItem(<br />
'PG_SPAWFM_DIRECTORIES',<br />
array(<br />
array(<br />
'dir'     =&gt; SpawConfig::getStaticConfigValue('SPAW_DIR').'uploads/flash/',<br />
'caption' =&gt; 'Flash movies',<br />
'params'  =&gt; array(<br />
'allowed_filetypes' =&gt; array('flash')<br />
)<br />
),<br />
array(<br />
'dir'     =&gt; SpawConfig::getStaticConfigValue('SPAW_DIR').'uploads/images/',<br />
'caption' =&gt; 'Images',<br />
'params'  =&gt; array(<br />
'default_dir' =&gt; true, // set directory as default (optional setting)<br />
'allowed_filetypes' =&gt; array('images')<br />
)<br />
),<br />
array(<br />
'dir'     =&gt; SpawConfig::getStaticConfigValue('SPAW_DIR').'uploads/files/',<br />
'fsdir'   =&gt; SpawConfig::getStaticConfigValue('SPAW_ROOT').'uploads/files/', // optional absolute physical filesystem path<br />
'caption' =&gt; 'Files',<br />
'params'  =&gt; array(<br />
'allowed_filetypes' =&gt; array('any')<br />
)<br />
),<br />
),<br />
SPAW_CFG_TRANSFER_SECURE<br />
);</code></p>
<p>По умолчанию SPAW2 использует следующие каталоги:<br />
uploads/flash – для флеш-объектов;<br />
uploads/images – для картинок;<br />
uploads/files – для прочих файлов.</p>
<p>Если вас чем-то не устраивают эти каталоги, измените файл конфигурации, прописав свои каталоги. Не забудьте установить права доступа 777 к этим каталогам (в FTP-клиенте):</p>
<p><code>chmod 777 spaw2/uploads/flash<br />
chmod 777 spaw2/uploads/images<br />
chmod 777 spaw2/uploads/files<br />
chmod 777 spaw2/uploads</code></p>
<p>Когда отредактирован файл конфигурации SPAW2, закачайте каталог spaw2 на ваш Web-сервер.<br />
Половина задачи уже выполнена: визуальный редактор настроен и загружен на Web-сервер. Осталось подключить его к микроблогу. Тут нам не обойтись без редактирования файла index.php микроблога. Откройте его и найдите следующую строку (обработка добавления записи):</p>
<p>case &laquo;add_post&raquo;:</p>
<p>Начиная от case, и до break отредактируйте PHP-код так:</p>
<p><code>case "add_post":<br />
if (!is_admin()) exit();include "spaw2/spaw.inc.php";<br />
$editor = new SpawEditor("text");if (!isset($_v['title']) || !isset($_v['text']))<br />
{<br />
$post['title'] = $post['text'] = $p = "";<br />
hook(MBE_POST_FORM_SHOW_BEFORE);<br />
include $tpl['post_form'];<br />
hook(MBE_POST_FORM_SHOW_AFTER);<br />
}<br />
else<br />
{<br />
$p = time();<br />
$post_title = $_POST['title'];<br />
$post_html = $_POST['text'];</p>
<p>hook(MBE_POST_ADD_BEFORE);</p>
<p>$f = fopen("data/posts/".$p, "w+");<br />
fwrite($f, $post_title."\n".$post_html);<br />
fclose($f);<br />
$f = fopen("data/comments/".$p, "w+");<br />
fclose($f);</p>
<p>hook(MBE_POST_ADD_AFTER);</p>
<p>@chmod("data/posts/".$p, 0777);<br />
@chmod("data/comments/".$p, 0777);<br />
redirect($_SERVER['PHP_SELF']);<br />
}<br />
break;</p>
<p></code></p>
<p>Дальше нужно найти строку case &laquo;edit_post&raquo;. Как и в случае с добавлением записи, код обработки редактирования записи будет выглядеть так:</p>
<p><code>case "edit_post":if (!is_admin() or !isset($_v['p'])) exit();if (!isset($_v['title']) || !isset($_v['text']) || !isset($_v['p']))<br />
{<br />
$post = post_info($_v['p']);</p>
<p>include "spaw2/spaw.inc.php";<br />
$editor = new SpawEditor("text",$post['text']);</p>
<p>$post['title'] = str_replace('"', '"', $post['title']);<br />
hook(MBE_POST_FORM_SHOW_BEFORE);<br />
include $tpl['post_form'];<br />
hook(MBE_POST_FORM_SHOW_AFTER);<br />
}<br />
else<br />
{<br />
hook(MBE_POST_EDIT_BEFORE);</p>
<p>$f = fopen("data/posts/".$_v['p'], "w+");<br />
flock($f, LOCK_EX);<br />
fwrite($f, $_v['title']."\n".$_v['text']);<br />
flock($f, LOCK_UN);<br />
fclose($f);</p>
<p>hook(MBE_POST_EDIT_AFTER);</p>
<p>redirect($_SERVER['PHP_SELF']);<br />
}<br />
break;</p>
<p></code></p>
<p>Сохраните index.php и загрузите его на сервер. После этого отредактируйте форму добавления записи – файл data/tpl/post_form.tpl (листинг 1). Как обычно, код, на который нужно обратить особое внимание, выделен жирным.</p>
<p>Листинг 1. Файл data/tpl/post_form.tpl</p>
<p>&lt;center&gt;<br />
&lt;form action=&lt;?=$_SERVER['PHP_SELF'];?&gt; method=post&gt;<br />
&lt;input type=hidden name=action value=&lt;?=$_v['action'];?&gt;&gt;<br />
&lt;input type=hidden name=p value=&lt;?=@$_v['p'];?&gt;&gt;<br />
<strong>&lt;input type=text name=title size=88 value=&raquo;&lt;?=$post['title'];?&gt;&raquo;&gt;&lt;br&gt;&lt;br&gt;<br />
&lt;? $editor-&gt;show(); ?&gt;&lt;br&gt;&lt;input type=submit&gt;</strong><br />
&lt;/form&gt;<br />
&lt;/center&gt;</p>
<p>Теперь посмотрим, что у нас получилось. Думаю, где ДО и ПОСЛЕ вы уже сами догадаетесь <img src='http://dkws.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Скачать уже готовую версию можно тут: <a href="http://www.dkws.org.ua/index.php?page=show&amp;file=downloads">MicroBlog + spaw</a></p>

<a href='http://dkws.net/archives/472/13-1' title='13-1'><img width="150" height="150" src="http://dkws.net/wp-content/uploads/2010/04/13-1-150x150.png" class="attachment-thumbnail" alt="" title="13-1" /></a>
<a href='http://dkws.net/archives/472/13-3' title='13-3'><img width="150" height="150" src="http://dkws.net/wp-content/uploads/2010/04/13-3-150x150.png" class="attachment-thumbnail" alt="" title="13-3" /></a>
<a href='http://dkws.net/archives/472/13-5' title='13-5'><img width="150" height="150" src="http://dkws.net/wp-content/uploads/2010/04/13-5-150x150.png" class="attachment-thumbnail" alt="" title="13-5" /></a>

]]></content:encoded>
			<wfw:commentRss>http://dkws.net/archives/472/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Генеральная уборка или ускорение WordPress</title>
		<link>http://dkws.net/archives/461</link>
		<comments>http://dkws.net/archives/461#comments</comments>
		<pubDate>Sat, 03 Apr 2010 14:40:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Блогосфера]]></category>
		<category><![CDATA[exclusive]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[оптимизация]]></category>
		<category><![CDATA[ускорение]]></category>

		<guid isPermaLink="false">http://dkws.net/?p=461</guid>
		<description><![CDATA[Со временем вы заметите, что ваш блог уже не такой шустрый, как раньше. А всему виной &#171;мусор&#187;, накопившийся в базе данных блога. Зайдите в phpMyAdmin и выполните следующие запросы:
SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;
DELETE a,b,c FROM wp_posts a WHERE a.post_type = 'revision' LEFT JOIN wp_term_relationships b [...]]]></description>
			<content:encoded><![CDATA[<p>Со временем вы заметите, что ваш блог уже не такой шустрый, как раньше. А всему виной &laquo;мусор&raquo;, накопившийся в базе данных блога. Зайдите в phpMyAdmin и выполните следующие запросы:</p>
<p><code>SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;</p>
<p>DELETE a,b,c FROM wp_posts a WHERE a.post_type = 'revision' LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id);</p>
<p>DELETE FROM wp_comments WHERE comment_type = 'pingback';</p>
<p>DELETE from wp_comments WHERE comment_approved = '0'</code></p>
<p>Первый запрос удаляет неиспользуемые теги (метки), а остальные – мусор, вроде спам-комментариев и всего остального, что замедляет работу WP. Имя таблиц нужно заменить на свои (если вы изменили префикс таблиц).<br />
После этого выберите все таблицы и выберите из меню действий Оптимизировать таблицу. После этого ваш блог заработает быстрее.<br />
Поскольку приведенные выше действия нужно выполнять регулярно, скажем, раз в месяц – все зависит от популярности вашего блога, я решил создать PHP-сценарий, автоматизирующий данные задачи. Сценарий clean.php выполняет очистку блога от мусора и выполняет оптимизацию таблиц. Сценарий нужно поместить в один каталог с файлом wp-config.php.<br />
По умолчанию сценарий работает в &laquo;тихом режиме&raquo; – выводит только выполняемые запросы, но не выводит результат выполнения. Вы можете, при желании, конечно, его модифицировать, добавив, например, количество удаленных записей или отчет об оптимизации. Но учтите, что функциональность сценария от этого лучше не станет.</p>
<p>Листинг. Сценарий clean.php<br />
<code>&lt;?<br />
echo "&lt;p&gt;Сценарий оптимизации WordPress<br />
&lt;p&gt;&amp;copy 2010 Денис Колисниченко<br />
&lt;p&gt;";</p>
<p>include "wp-config.php";</p>
<p>// константы из wp-config.php<br />
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);<br />
mysql_select_db(DB_NAME);</p>
<p>// список таблиц для оптимизации. Остальные таблицы редко требуют оптимизации<br />
$optimize_tables[] =  $table_prefix."commentmeta";<br />
$optimize_tables[] =  $table_prefix."comments";<br />
$optimize_tables[] =  $table_prefix."links";<br />
$optimize_tables[] =  $table_prefix."postmeta";<br />
$optimize_tables[] =  $table_prefix."posts";<br />
$optimize_tables[] =  $table_prefix."usermeta";</p>
<p>// удаляем мусор<br />
$q = "DELETE a,b,c FROM $table_prefix"."posts a WHERE a.post_type = 'revision' LEFT JOIN ".$table_prefix."term_relationships b ON (a.ID = b.object_id) LEFT JOIN ".$table_prefix."postmeta c ON (a.ID = c.post_id);";<br />
echo $q; echo "&lt;p&gt;";<br />
mysql_query($q);</p>
<p>$q = "DELETE FROM $table_prefix"."comments WHERE comment_type = 'pingback';";<br />
echo $q; echo "&lt;p&gt;";<br />
mysql_query($q);</p>
<p>$q = "DELETE from $table_prefix"."comments WHERE comment_approved = '0';";<br />
echo $q; echo "&lt;p&gt;";<br />
mysql_query($q);</p>
<p>$q = "SELECT * From ".$table_prefix."terms wt INNER JOIN $table_prefix"."term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;";<br />
echo $q; echo "&lt;p&gt;";<br />
mysql_query($q);</p>
<p>// формируем запрос для оптимизации<br />
$q = "OPTIMIZE TABLE ";<br />
foreach ($optimize_tables as $v)<br />
$q = $q . "$v , ";</p>
<p>$q = $q . $table_prefix."users;";<br />
mysql_query($q);<br />
echo $q;</p>
<p>echo "&lt;p&gt;Оптимизация выполнена";</p>
<p>?&gt;</code></p>
<p>Скачать сценарий оптимизации можно по адресу:</p>
<p><a href=http://dkws.net/clean.zip>http://dkws.net/clean.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dkws.net/archives/461/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

