На одном из сайтов возникла ошибка DB function failed with error number 126 при попытке зайти в менеджер категорий (/administrator/index.php?option=com_content) которую необходимо было решить.

Анализ запроса показал, что не хватает место в папке /tmp где MySQL создает временные таблицы. А на данном сайте около 2000 материалов - то есть объем информации довольно большой. Конечно, можно увеличить место, но если хостинг виртуальный то это не всегда возможно, да и нагрузка создается нешуточная, что совершенно неверно.

Поэтому я пошел по другому пути - а именно оптимизировать запрос, убрав из него все лишнее, минус только в том что данный хак является хаком.

Итак, решение - в файле /administrator/components/com_content/controller.php находим строчку (скорее всего строка 144 или рядом)

		$query = 'SELECT c.*, g.name AS groupname, cc.title AS name, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author' .

и заменяем ее на

		$query = 'SELECT c.id, c.title, c.state, c.sectionid, c.mask, c.catid, 	c.created, c.created_by, c.created_by_alias,  c.ordering, c.access, c.hits, g.name AS groupname, cc.title AS name, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author' .

Комментарии   

Kosshechka
0 #8 Kosshechka 26.02.2015 13:12
Где найти этот файл?
vomitting
-1 #7 vomitting 07.07.2012 21:27
Поажлуйста как ещё оптитмизировать запросы в плоть до обрезания всего не нужного, например по дэфолту выскакивают все материалы, как сделать так чтобы при нажатии на кнопку в админке - материалы, выводилась сразу определенная категрия и раздел ??
Administrator
0 #6 Administrator 23.10.2011 11:43
Цитирую info:
При наличии более 50.000 статей данный способ не работает :cry:

Ого, немало статей..думаю что в таком случае сайт хостится на ВДСке, а значит можно и увеличить немного размер временной папки (о чем я упомянал в статье).
info
0 #5 info 23.10.2011 11:32
При наличии более 50.000 статей данный способ не работает :cry:
Anna
0 #4 Anna 23.09.2011 04:41
Спасибо Автору!
Андрей
0 #3 Андрей 22.09.2011 07:57
Автору +5.
;-)
Иван
0 #2 Иван 21.02.2011 04:54
прям жизнь спас!!!!
Спасибо большое!!! :lol:
Administrator
0 #1 Administrator 23.10.2010 06:37
Более корректный вариант без notice в админке -
Цитата:
$query = 'SELECT c.id, c.title, c.state, c.sectionid, c.mask, c.catid, c.created, c.created_by, c.created_by_alias, c.ordering, c.publish_up, c.checked_out_time, c.checked_out, c.publish_down, c.access, c.hits, g.name AS groupname, cc.title AS name, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author' .

Добавить комментарий


Защитный код
Обновить

Последние комментарии

  • В любом случае это будет инструкция, постараюсь конечно максимально полно, но инструкция как выявлять ...

    Подробнее...

     
  • Ок жду. у меня почти 120 сайтов из них 90 на джумле разных версий ) так что мне это важно поэтому ...

    Подробнее...

     
  • Да, это важная часть. Проблема в том что айболит видит не всё. То есть это мера необходимая, но ...

    Подробнее...

     
  • Короче, я обновил php пропатчил сайты и почистился от вирусов ай болитом на этом моя процедура защиты ...

    Подробнее...

     
  • Прошло еще почти полтора месяца а так и не дописали (

    Подробнее...

Вы смотрели