Новости 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 Ответов
  • 1400 Просмотров
*

maxsl_89

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Добрый день,
Есть модуль с полями для информации, в основном текстовая.

Подскажите как инфо из этих полей использовать другим модулем? возможно ли это? или  может использоваться только в пределах одного модуля?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Текстовые поля в админке модуля
« Ответ #1 : 30.10.2013, 15:00:26 »
Код
$module = JModuleHelper::getModule('название модуля', 'заголовок модуля');
$params = new JRegistry();
$params->loadString($module->params);
die( var_dump($params) );
но он должен быть опубликованным на той же странице.
Либо делать отдельно запрос и вытягивать параметры модуля из таблицы #__modules, например по id
*

maxsl_89

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Текстовые поля в админке модуля
« Ответ #2 : 30.10.2013, 15:28:24 »
Так я забраю текст в самом модуле
Код
//принимаем параметр с админки
$par->arr[title] = JText::sprintf('MOD_RESORTTEXT_PARAMETR_LABEL', $params->get('title'));
                $par->arr[text] = JText::sprintf('MOD_RESORTTEXT_PARAMETR_LABEL', $params->get('text'));
$par->arr[restype] = JText::sprintf('MOD_RESORTTEXT_PARAMETR_LABEL', $params->get('restype'));
$par->arr[order] = JText::sprintf('MOD_RESORTTEXT_PARAMETR_LABEL', $params->get('order'));
$par->arr[exchange] = JText::sprintf('MOD_RESORTTEXT_PARAMETR_LABEL', $params->get('exchange'));


А примерно так мне надо будет забрать это в новый модуль?

Код
   public static function getList(&$params)
    {

    $klub_resorts = JText::sprintf('MOD_TABLERESORTS_PARAMETR_LABEL', $params->get('klub_resorts'));

    $db = JFactory::getDbo();

$query = $db->getQuery(true);
$query->select('id, title, params');
$query->from('#__modules');
$query->where('catid = 145');
$db->setQuery($query);
$list = $db->loadObjectList();

return $list;
   
    }
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Текстовые поля в админке модуля
« Ответ #3 : 30.10.2013, 15:34:55 »
Цитировать
$query->where('catid = 145');
где там catid?)

Код
	    $db	= JFactory::getDbo();

$query = $db->getQuery(true);
$query->select('params');
$query->from('#__modules');
$query->where('id = 145');
$db->setQuery($query, 0, 1);
$result = $db->loadResult();
if ($err = $db->getErrorMsg()) die($err);

if ($result) {
$params = new JRegistry();
$params->loadString($result);
echo $params->get('имя параметра');
}
*

maxsl_89

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Текстовые поля в админке модуля
« Ответ #4 : 31.10.2013, 08:52:24 »
Все отлично работает, вытаскиваю все нужные поля.
Скажи, правильно ли я поступлю, если в один модуль буду тянуть инфу с 20-ти модулей такого типа?
не будет ли сильной нагрузки?
*

maxsl_89

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Текстовые поля в админке модуля
« Ответ #5 : 04.11.2013, 16:02:22 »
Подскажите, плз, как сделать чтоб в данные поля можно было вводить теги HTML
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Текстовые поля в админке модуля
« Ответ #6 : 04.11.2013, 16:25:04 »
Полю указать атрибут filter="RAW"
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вставка кода вызова модуля в тело шаблона другого модуля

Автор Dorfman

Ответов: 15
Просмотров: 2646
Последний ответ 19.11.2018, 21:45:54
от beliyadm
Нужна помощь в доработке модуля под Joomla 3

Автор kik84

Ответов: 5
Просмотров: 2795
Последний ответ 30.01.2018, 22:40:30
от Елeна
Выбор пользователя в модальном окне в админке

Автор orexov_m

Ответов: 0
Просмотров: 1177
Последний ответ 11.04.2017, 11:35:43
от orexov_m
Модификация модуля lastet_news вывод времени перед заголовком

Автор Morphiss

Ответов: 9
Просмотров: 2568
Последний ответ 19.04.2016, 12:41:55
от spsyper
Создание платного модуля

Автор fiter

Ответов: 7
Просмотров: 2024
Последний ответ 04.08.2014, 18:27:05
от neo85r