bumer3
Постоялец
- Регистрация
- 10 Янв 2008
- Сообщения
- 291
- Реакции
- 155
- Автор темы
- #1
Иногда начинаются проблемы со скоростью работы движка при выходе количества новостей за несколько тысяч.
Многие говорят что ДЛЕ не годен под такие большие сайты. Но по своему опыту могу посоветовать сделать одну штуку которая конкретно увеличит скорость работы с БД.
У меня это проблема началась тогда когда я сделал вывод новостей по всем суб-категориям. Категорий было очень много. Проработало один день. Хотя сайт стоял на выделенном серве мне написал админ и сказал что я ему бд положил.
Проблема оказалась вот в чем. При выводе новостей за категорию в запросе используется такой синтаксис category regexp '[[:<:]](4)[[:>:]]' , где 4 ИД категории. Это связано с мульти категориями в ДЛЕ. И это очень сильно тормозит БД при большом количестве новостей.
Если планируется сайт под много новостей то мой совет отключить мульти категории и сделать нормальный запрос.
Что делаем если решили вырубить мульти категории.
1. Открываем файл /engine/inc/addnews.php
2. Находим
3. Открываем файл /engine/inc/editnews.php
4. Находим
Находим
Там есть
делаем аналогичную операцию
6. Открываем файл /engine/engine.php
Там находим
Чучуть ниже есть
Вот и все вроде это были все файлы где встречается такие запросы. Вроде совсем маленькие изменения но при большом количестве новостей это сможет очень сильно разгрузить БД.
(с) By Bumer3 / nulled.ws
Многие говорят что ДЛЕ не годен под такие большие сайты. Но по своему опыту могу посоветовать сделать одну штуку которая конкретно увеличит скорость работы с БД.
У меня это проблема началась тогда когда я сделал вывод новостей по всем суб-категориям. Категорий было очень много. Проработало один день. Хотя сайт стоял на выделенном серве мне написал админ и сказал что я ему бд положил.
Проблема оказалась вот в чем. При выводе новостей за категорию в запросе используется такой синтаксис category regexp '[[:<:]](4)[[:>:]]' , где 4 ИД категории. Это связано с мульти категориями в ДЛЕ. И это очень сильно тормозит БД при большом количестве новостей.
Если планируется сайт под много новостей то мой совет отключить мульти категории и сделать нормальный запрос.
Что делаем если решили вырубить мульти категории.
1. Открываем файл /engine/inc/addnews.php
2. Находим
меняем на<select name="category[]" id="category" class="cat_select" onchange="onCategoryChange(this.value)" multiple>
{$categories_list}
</select>
<select name="category[]" id="category" class="cat_select" onchange="onCategoryChange(this.value)" style="height:16px">
{$categories_list}
</select>
3. Открываем файл /engine/inc/editnews.php
4. Находим
Заменяем на<select name="category[]" id="category" class="cat_select" onchange="onCategoryChange(this.value)" multiple>
{$categories_list}
</select>
5 Теперь в этом же файле ближе к верху.<select name="category[]" id="category" class="cat_select" onchange="onCategoryChange(this.value)" style="height:16px">
{$categories_list}
</select>
Находим
и потом смотрим ниже идут запросы.if(!$user_group[$member_db[1]]['allow_all_edit'] AND $member_db[1] != 1) $author = $member_db[2];
if (strlen ($search_field) > 2)
Там есть
Заменяем наcategory regexp '[[:<:]]($search_cat)[[:>:]]'
ищемcategory=$search_cat
Ниже идут запросы// End prelisting
if (strlen ($search_field) > 2)
делаем аналогичную операцию
6. Открываем файл /engine/engine.php
Там находим
// ################ Вывод отдельной категории #################
Чучуть ниже есть
меняем соответственно на$sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read FROM " . PREFIX . "_post where category regexp '[[:<:]]($get_cats)[[:>:]]' AND approve = '1'".$where_date." ORDER BY fixed desc, ".$config['news_sort']." ".$config['news_msort']." LIMIT ".$cstart.",".$config['news_number'];
и также$sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read FROM " . PREFIX . "_post where category=$get_cats AND approve = '1'".$where_date." ORDER BY fixed desc, ".$config['news_sort']." ".$config['news_msort']." LIMIT ".$cstart.",".$config['news_number'];
на$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where category regexp '[[:<:]]($get_cats)[[:>:]]' AND approve = '1'".$where_date;
$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where category=$get_cats AND approve = '1'".$where_date;
Вот и все вроде это были все файлы где встречается такие запросы. Вроде совсем маленькие изменения но при большом количестве новостей это сможет очень сильно разгрузить БД.
(с) By Bumer3 / nulled.ws