dle.in.ua » Хаки » Хак. Готовим ДЛЕ под сайт с большим количеством новостей.

Хак. Готовим ДЛЕ под сайт с большим количеством новостей.

Автор: GauraStyle от 29-03-2008, 14:28
Хак. Готовим ДЛЕ под сайт с большим количеством новостей.

Иногда начинаются проблемы со скоростью работы движка при выходе количества новостей за несколько тысяч.

Многие говорят что ДЛЕ не годен под такие большие сайты. Но по своему опыту могу посоветовать сделать одну штуку которая конкретно увеличит скорость работы с БД.

У меня это проблема началась тогда когда я сделал вывод новостей по всем суб-категориям. Категорий было очень много. Проработало один день. Хотя сайт стоял на выделенном серве мне написал админ и сказал что я ему бд положил.

Проблема оказалась вот в чем.

При выводе новостей за категорию в запросе используется такой синтаксис category regexp '[[::]]' , где 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>


Меняем на:
<select name="category[]" id="category" class="cat_select" onchange="onCategoryChange(this.value)" style="height:16px">
{$categories_list}
</select>


5. Теперь в этом же файле ближе к верху.
6. Находим:
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


Ниже идут запросы.
Делаем аналогичную операцию.
7. Открываем файл /engine/engine.php
8. Находим:
// ################ Вывод отдельной категории #################


Ниже есть:
$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
laughing
  • Группа: User
  • Icq: 344198
  • Комментариев: 103
  • Публикаций: 2
  • неа
    • Dimazzan
    • Регистрация: 29.02.2008
    • Репутация: (0|0|0)
    • 20 мая 2009 18:24
    • 1
    ^
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.