Новости Joomla

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

👩‍💻 Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях. На старте его сайт на Joomla 3 вообще не смог обновиться на Joomla 5. Пришлось делать экспорт/импорт материалов. Проделав всё это он запустил-таки этот объём данных на Joomla 5. Тестовый скрипт грузил 200 материалов из этого объёма всего за 94 секунды ))) А главная страница с категориями грузилась 20 секунд. Добавив индекс для таблицы #__content

CREATE INDEX idx_catid_state ON #__content (catid, state);
он сократил время загрузки категорий до 1 секунды. Затем наш герой решил поковырять SQL-запрос в ArticleModel, который отвечает за выборку материалов. И решил заменить тип JOIN на STRAIGHT_JOIN для категорий.
// ->from($db->quoteName('#__content', 'a'))->from(    $db->quoteName('#__content', 'a')    . ' STRAIGHT_JOIN ' . $db->quoteName('#__categories', 'c')    . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))// ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))
Что сократило загрузку 200 материалов из 150к с 94 секунд до 5. К слову сказать, боевой сайт на Joomla 3 крутится на 12CPU 64GB рамы. А все манипуляции с кодом он делает на базовом 1CPU 1GB сервере и замеры скорости даны именно для базового сервера. Но это всё в дискуссии, хотя в идеале должно вылиться в Pull Requests. Мы - Open Source сообщество, где никто никому ничего не должен. Джунгли. Но человек ищет пути оптимизации Joomla и предлагает решения. Если оказать поддержку и предложить помощь хотя бы с тестированием самых разнообразных сценариев, то возможно эти улучшения смогут войти в ядро. Пусть не быстро, пусть через несколько лет, пусть не все, но войдут. Достаточно предложить руку помощи и приложить немного усилий.
Дискуссию на GitHub можно почитать здесь.@joomlafeed#joomla #community #php

0 Пользователей и 1 Гость просматривают эту тему.
  • 6 Ответов
  • 3676 Просмотров
*

moskitos80

  • Осваиваюсь на форуме
  • 21
  • 3 / 0
Привет всем. Задача простая - делаю ссылку для выбора картинки:
Код HTML:
Код
<a class="modal" title="Изображение" href="index.php?option=com_media&amp;view=images&amp;layout=default&amp;tmpl=component&amp;e_name=selectmap" rel="{handler: 'iframe', size: {x: 570, y: 400}}">
 <?php echo JText::_('SELECT_MAP')?>
</a>
, вешаю на неё модальное окно:
PHP код:

Код
<?php JHTML::_('behavior.modal', 'a.modal' )?>

При нажатии кнопки открывается модальное окно с iframe и идет запрос к com_media: index.php?option=com_media&view=images&layout=defa ult&tmpl=component&e_name=selectmap - Собственно вопрос, как теперь на странице, с которой вызывалось модальное окно получить результат - урл выбранной картинки, если при нажатии кнопки "Вставить" - в модальном окне, Joomla обращается к ф-ции jInsertEditorText, которую используют плагины - кнопки для виз. редакторов, и переопределить её я не могу и использовать тоже т.к. значение нужно поиметь не виз. редакторе.

Есть у кого идеи, кроме как реализовать собственный менеджер картинок?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Можно посмотреть как реализован возврат наименования статьи при выборе ее в элементе Article при редактировании пункта меню. Там по сути все просто и может быть реализовано двумя способами:
1. при открытии модального окна переопределяется обработчик onClose, который срабатывает при закрытии модального окна
2. в модальном окне вызывается функция, объявленная в родительском документе (доступ - через window.parent).
*

moskitos80

  • Осваиваюсь на форуме
  • 21
  • 3 / 0
Можно посмотреть как реализован возврат наименования статьи при выборе ее в элементе Article при редактировании пункта меню...

Нет меня интересует конкретно com_media. А про обработчик onClose можно подробнее? Я смотрел исходник метода JHTMLBehavior::modal($selector='a.modal', $params = array())  - про второй параметр, если честно не очень понятно, если я определяю что то вроде:
Код
JHTML::_('behavior.modal', 'a.modal', array('onClose' = > 'myfunction') );
И определяю в Javascript функцию с именем myfunction
то эта конструкция в итоге выдаёт что myfunction не имеет метода create. Я пробовал даже создавать объект myfunction с методом  create - не помогает! Уже пол инета перерыл ни где - ничего!
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Хм, а что если попробовать переопределить ImageManager.onok?
*

moskitos80

  • Осваиваюсь на форуме
  • 21
  • 3 / 0
Хм, а что если попробовать переопределить ImageManager.onok?
Решил не заморачиваться с ImageManager. Спасибо за попытку помочь. Остальные решения найденные в сети не оптимальны. Решил реализовывать своими силами.
*

Good

  • Новичок
  • 1
  • 0 / 0
Я смотрел исходник метода JHTMLBehavior::modal($selector='a.modal', $params = array())  - про второй параметр, если честно не очень понятно
А второй параметр определяет поведение SqeezBox'a - iframe, rel, size и т.д. Кстати, картинку лучше вызывать с параметром image ;-).
Вот, взгляните на домашнюю страничку плагина:
http://digitarald.de/project/squeezebox/
*

moskitos80

  • Осваиваюсь на форуме
  • 21
  • 3 / 0
Большое всем спасибо. Сделал в итоге через модальное окно, но с функционалом com_media не стал заморачиваться. Просто добавил в контроллер новый метод и ещё один вид, который вызывается из ifram-a с параметром format=row. Метод парсит определённую папку и выводит картинки рядами, на них повесил свой JS всё работает стабильно.  ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

params->get для компонента, как получить свои собственные параметры для компонента

Автор klubnichkaaa

Ответов: 13
Просмотров: 14362
Последний ответ 01.06.2017, 20:20:28
от Septdir
По ID'у пункта меню получить ссылку для перехода

Автор GRIG

Ответов: 4
Просмотров: 3126
Последний ответ 08.05.2017, 17:13:05
от Aleks.Denezh
Значение из контента перенести в модуль

Автор leo78

Ответов: 42
Просмотров: 3357
Последний ответ 31.07.2015, 19:51:00
от leo78
Получить значения пагинации к примеру $this->pagination->total

Автор klubnichkaaa

Ответов: 7
Просмотров: 1715
Последний ответ 09.06.2014, 14:50:57
от klubnichkaaa
Модальные окна в административной части

Автор klubnichkaaa

Ответов: 5
Просмотров: 1697
Последний ответ 03.06.2014, 09:57:57
от klubnichkaaa