Знакомлюсь с Друпал (Axel, привет! :). Огромный "РЕСПЕКТ"!
Решил вести дневничок, чтобы здесь писать про все мои шаги по изучению Друпала.
Возникли вопросы:
1. Как уменьшить объем БД? Вроде и информации даже еще нет, а таблицы cache,
access_log, locales_source, locales_target стали просто огромными (почти по полмегабайта каждая, при том что текстовой информации на сайте выложено всего пока не более 30 кб). Нет
штатного или какого-либо средства очищать логи и оптимизировать БД?
2. с кодировкой UTF-8 моя панель PHPMyAdmin, настроеннаяна кириллицу
показывает кракозябры, а при переключении на UTF-8 правильно показывает
только русский текст, все остальное квадратиками. Так и на сервере будет? Или у меня просто версия PHPMyAdmin устаревшая phpMyAdmin 2.5.4 и MySQL 4.0.16-nt?
3. Где находятся настройки галереи (сколько превьюшек на странице, качество
сжатия и размер самих превьюшек, которые среднего размера и размером 100px)?
Я нашел в настройках admin/settings/flexinode параметр flexinode_thumb_size
= 100px, изменил на 200, но новая превьюшка все равно была 100px.
4. Зачем в папке images/temp создаются картинки-двойники (при добавлении картинок в модуль album) даже тогда, когда
картинка сразу публикуется? Это ведь расходование мсета ненужное.
5. есть ли какой-то способ убрать из URLов /taxonomy/ и /node/, кроме как указание параллельного URLа?
Сейчас буду рыться на этом форуме. Очень, кстати, неудобный поиск...
А, может, кто и тут подскажет?
Комментарии
1. Да как вам ни странно, таблицы таблицы cache,
access_log, locales_source, locales_target будут такими какие есть. Кэш и access_log еще и расти может. Access_log можно урезать из-под настроек сайта о хранении информации посещений.
2. Это не проблема. Будет так и на сервере, ничего страшного в этом нет.
3. Чем строится галерея, для начала? Если image.module, то в настройках /admin/image
4. Не знаю.
5. Зачем?
1. Спасибо, arsant. Нашел в admin/settings/statistics настройки логов. Оказывается, там есть автоочистка старых логов и этот период настраивается.
По поводу таблицы cache... Попробовал вручную своими кривыми ручками оочистить из PHPMyAdmin ячейки этой таблицы.
Сайт стал неработоспособным... ))) Эти манипуляции напомнили мне анекдот, когда у таракана ученые в ходе исследования отрывают по одной лапке. Одну оторвали - а он все-таки может ползти. Вторую - ползет... Оторвали последнюю. Не движется... Вывод: значит, умер... )))
Это, имхо, большой минус Друпала, так как база непредсказуемо увеличивается в объемах, что, наверное, усложняет операции восстановления и бакупа. А если и на сервере бакуп, то занимаемое пространство сайта вырастает в геометрической прогрессии.
2. Да, конечно, можно и так. Особенно, если не пользоваться PHPMyAdmin
3. С этим разобрался. Модуль album. 100px по умолчанию было прописано на admin/settings/image (опция thumbnail). Кстати, тут же можно и настроить размер preview и разрешить посетителям смотреть картинки в полный размер.
4. Видимо, с этим придется мириться...
5. И вправду, зачем? ) Поставлю вопрос по-другому: а возможно ли, в принципе, запретить обращение к истинному URLу, содержащему /node/ & /taxonomy/? Чтобы работали только альтернативные URLы?
Следущая запись будет, наверное, про мультсайтинг\двуязычность сайтов. Вернее, одного русскоязычного сайта, но с английской (альтернативной) версией. Сначала хотел делать их обособленными (2 друпала заливать в разные директории), но это будет не очень хорошо в плане администрирования в дальнейшем. Попробую рекомендации Axel по этому поводу. Где-то на форуме это видел...
Поиск рулит!
cache, конечно, таблица не маленькая, но зато она сильно увеличивает производительность.
И на ее очищение движок нормально реагирует
DELETE FROM cache
или лучше
TRUNCATE cache
Если Вы не хотите, чтобы таблица cache росла, то отключите кэш. Но делать это крайне не рекомендуется...
Еще таблицы желательно иногда оптимизировать.
OPTIOMIZE TABLE tbl_name
--
USU-Lug http://usu-lug.org.ru
Добавлю, что при отключённом кеше всё равно таблица cache будет заполняться, хотя и не так интенсивно - некоторые вещи друпал кеширует независимо от настроек (меню например), поскольку иначе это будут неоправданные тормоза в работе. Очищать таблицу cache также рекомендуется когда сайт переносится с хостинга на хостинг.
--
Axel,
www.axel.drupal.ru
У меня есть сильное подозрение, что их можно удалить, если это temp. Может автор модуля забыл это сделать Но может быть и полезную роль они играют - стоит попробовать во всяком случае, если сайт тестовый.
Внутри движка модули будут будут обрабатывать те url, которые в них "забиты", т.е. node и taxonomy, но можно поэкспериментировать с функцией mass url rewriting:
http://drupal.ru/node/788#comment-3319
http://drupal.org/node/3665
- теоретически таким способом можно полностью подменить как входящие url (то что вводит пользователь), так и исходящие (те что выдаёт броузер).
--
Axel,
www.axel.drupal.ru
Спасибо всем за советы и пояснения.
Сделал себе php-файлик с таким содержанием:
$db=mysql_connect("localhost","db_user","password",true) or die(mysql_error());
mysql_select_db("db_name",$db) or die(mysql_error());
mysql_query("TRUNCATE cache");
mysql_query("TRUNCATE accesslog");
mysql_query("TRUNCATE locales_source");
mysql_query("TRUNCATE locales_target");
mysql_query("OPTIMIZE TABLE cache");
mysql_query("OPTIMIZE TABLE access");
mysql_query("OPTIMIZE TABLE accesslog");
mysql_query("OPTIMIZE TABLE aggregator_category");
mysql_query("OPTIMIZE TABLE aggregator_category_feed");
mysql_query("OPTIMIZE TABLE aggregator_category_item");
mysql_query("OPTIMIZE TABLE aggregator_feed");
mysql_query("OPTIMIZE TABLE aggregator_item");
mysql_query("OPTIMIZE TABLE authmap");
mysql_query("OPTIMIZE TABLE blocks");
mysql_query("OPTIMIZE TABLE book");
mysql_query("OPTIMIZE TABLE boxes");
mysql_query("OPTIMIZE TABLE cache");
mysql_query("OPTIMIZE TABLE comments");
mysql_query("OPTIMIZE TABLE directory");
mysql_query("OPTIMIZE TABLE files");
mysql_query("OPTIMIZE TABLE filter_formats");
mysql_query("OPTIMIZE TABLE filters");
mysql_query("OPTIMIZE TABLE flexinode_data");
mysql_query("OPTIMIZE TABLE flexinode_field");
mysql_query("OPTIMIZE TABLE flexinode_type");
mysql_query("OPTIMIZE TABLE flood");
mysql_query("OPTIMIZE TABLE folksonomy");
mysql_query("OPTIMIZE TABLE forum");
mysql_query("OPTIMIZE TABLE history");
mysql_query("OPTIMIZE TABLE img_assist_map");
mysql_query("OPTIMIZE TABLE locales_meta");
mysql_query("OPTIMIZE TABLE locales_source");
mysql_query("OPTIMIZE TABLE locales_target");
mysql_query("OPTIMIZE TABLE menu");
mysql_query("OPTIMIZE TABLE moderation_filters");
mysql_query("OPTIMIZE TABLE moderation_roles");
mysql_query("OPTIMIZE TABLE moderation_votes");
mysql_query("OPTIMIZE TABLE node");
mysql_query("OPTIMIZE TABLE node_access");
mysql_query("OPTIMIZE TABLE node_comment_statistics");
mysql_query("OPTIMIZE TABLE node_counter");
mysql_query("OPTIMIZE TABLE permission");
mysql_query("OPTIMIZE TABLE poll");
mysql_query("OPTIMIZE TABLE poll_choices");
mysql_query("OPTIMIZE TABLE profile_fields");
mysql_query("OPTIMIZE TABLE profile_values");
mysql_query("OPTIMIZE TABLE queue");
mysql_query("OPTIMIZE TABLE role");
mysql_query("OPTIMIZE TABLE search_index");
mysql_query("OPTIMIZE TABLE search_total");
mysql_query("OPTIMIZE TABLE sequences");
mysql_query("OPTIMIZE TABLE sessions");
mysql_query("OPTIMIZE TABLE system");
mysql_query("OPTIMIZE TABLE term_access");
mysql_query("OPTIMIZE TABLE term_access_defaults");
mysql_query("OPTIMIZE TABLE term_data");
mysql_query("OPTIMIZE TABLE term_hierarchy");
mysql_query("OPTIMIZE TABLE term_node");
mysql_query("OPTIMIZE TABLE term_relation");
mysql_query("OPTIMIZE TABLE term_synonym");
mysql_query("OPTIMIZE TABLE tinymce_role");
mysql_query("OPTIMIZE TABLE tinymce_settings");
mysql_query("OPTIMIZE TABLE url_alias");
mysql_query("OPTIMIZE TABLE users");
mysql_query("OPTIMIZE TABLE users_roles");
mysql_query("OPTIMIZE TABLE variable");
mysql_query("OPTIMIZE TABLE vocabulary");
mysql_query("OPTIMIZE TABLE vocabulary_node_types");
mysql_query("OPTIMIZE TABLE watchdog");
?>
БД уменьшилась почти в 10 раз!
Думаю, что стоит иногда запускать этот скрипт на сервере (хотя бы перед бакупом для скачивания). Вроде на функциональности сайта никак не повлияло.
З.Ы. набор таблиц у каждого сайта свой.
З.З.Ы. может, этим же скриптом и картинки-двойники из папки files/images/temp периодически удалять или еще что-то, до чего я пока не дошел? И нужно ли это все вообще?
Что думаете по вопросам оптимизации БД, кода скриптов, количествау запрсов к БД? Как и что делаете Вы? Поделитесь секретиками...
Мдя... Что-то где-то с этим файликом не то сделал... Пропал русский язык на всем сайте... Сейчас в настройках буду искать, что-то сбилось или вообще пропало...
Ты удалил всю локализацию. Просто вернии ее на место и больше так никогда не делай!
--
USU-Lug http://usu-lug.org.ru
и кэш с accesslog тоже бы в зад вернуть...
Драсти. Мы как раз кэш и стараемся похерить. Или его ТАК херить нельзя?
Кэш можно.
И accesslog наверно можно, но не нужно, т.к. он и так переодически херится через cron.php.
--
USU-Lug http://usu-lug.org.ru
Ценный скриптик. Странно что штатный хрон.php такими делами не занимается.
Не удивительно, удалив таблицы локализации.
Nick, спасибо, что указал на таблицу.
BG, этот скриптик ценен только для каких-то кардинальных телодвижений. (имею ввиду TRUNCATE
А с остальными sql-командами (OPTIMIZE), как писал Nick, имеет смысл запускать скрипт периодически.
Axel, с переименованием node разобрался. Спасибо за линк.
Для версии 4.6 в файл настроек sites/default/settings.php в самом начале вписал:
function conf_url_rewrite($path, $mode = 'incoming') {
if ($mode == 'incoming') { // URL coming from a client
return preg_replace('!^content/(\d+)$!', 'node/\1', $path);
}
else { // URL going out to a client
return preg_replace('!^node/(\d+)$!', 'content/\1', $path);
}
}
Можно менять слово content в коде на слово display, например.
Похоже, что по этому образцу можно и taxonomy поменять.
Но вот как отучить сайт открывать страницы по старым линкам /node/ & /taxonomy/ пока не понял...
Про папку files/images/temp (в которой хранятся дубликаты картинок)
дописал в конце скриптика следующий код:
// удаление папки files/images/temp/ вместе с картинками
$dir = "files/images/temp/";
$handle = opendir($dir);
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
$del_file=$dir.$file;
unlink($del_file);
}
}
closedir($handle);
rmdir($dir);
// конец
папка удаляется вместе с файлами. При закачке на сервер новых картпнок папка образуется вновь. Так что иногда можно освобождать место на сервере, когда накапливается много картинок.