Новости 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 Гость просматривают эту тему.
  • 10 Ответов
  • 2608 Просмотров
*

slogic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Есть компонент. После его установки разворачиваются доп. таблицы в базе. При деинсталляции таблицы убиваются. Очевидно, обновление такого компоента через удаление/установку нового нельзя делать. Надо писать патч-компонент. Это мое видение. Может есть более толковый механизм? Например, при установке новой версии компонента в Joomla, где стоит старая версия, выполнять патчинг и обновление файлов. Был бы идеальный вариант.
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
В Joomla 1.5 можно добавить в XML-файл параметр method="upgrade":
Код
<?xml version="1.0" encoding="utf-8"?>
<install type="component" version="1.5.0" method="upgrade">
*

slogic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
А можно подробнее, на что влияет "upgrade"?
Здесь ( http://docs.joomla.org/Components:xml_installfile ) вообще атрибут method не упоминается.
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Хм, а что, Google отменили? Странно, мне казалось имея название атрибута и его значение найти что он делает проще простого.

Если кратко - то позволяет устанавливать расширение поверх уже установленной копии. Т.е. в этом случае не будет ошибки, что расширение уже установлено, все файлы из устанавливаемого дистрибутива будут безусловно записаны поверх имеющихся. Но если в новом дистрибутиве какие-то файлы уже неактуальны - они не будут удаляться, а останутся на сервере.
*

slogic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Посмотрел исходник фреймворка. "upgrade" влияет только на возможность перезаписи файлов. Не понятно, как влияет на исполнение <sql> блока. Как мне сделать, чтобы в upgrade режиме выполнились только определенные sql файлы? Ведь при обычной установке я предварительно удаляю существующие таблицы, а при обновлении мне надо только модфицировать структуру таблиц.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Ну я в компоненте JComments таблицы создаю только если их нет, в обработчике установщика делаю необходимые обновления структуры, а на тот случай, если вдруг пользователь удалит компонент - у меня при удалении таблицы не трогаются. Да, это оставляет их в базе на тот случай, если пользователь решил отказаться от использования данного компонента, но во всех остальных случаях - бережет время и нервы.
*

slogic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Неприемлемый для меня вариант. В моем случае нервы бережет точное соотв. структуры таблиц. В общем, понятно как надо извращаться. А в вашем случае наверное при деинсталляции стоит спросить пользователя, оставлять таблицы или нет в файле uninstall.php. Это самый корректный вариант.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
В моем случае нервы бережет точное соотв. структуры
таблиц.
ну за 3 года никаких проблем со структурой таблиц не было, а менял я ее раз 8 (и расширял, и менял индексы)...

В общем, понятно как надо извращаться. А в вашем случае наверное при деинсталляции стоит спросить пользователя, оставлять таблицы или нет в файле uninstall.php. Это самый корректный вариант.
Более правильно дать инструкции по удалению таблиц в ручном режиме, ибо я уверен, что 8 из 10 автоматом кликнут на удаление, а потом будут спрашивать на форуме как восстановить удаленное. Да и как показывает практика, компонент либо нравится сразу и надолго, либо не нравится и его удаляют в течении суток, и тогда в таблицах нет данных, а пустые таблицы есть не просят.
*

slogic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
... в обработчике установщика делаю необходимые обновления структуры
Кстати, я вначале пытался сделать изменение структуры с пом. тэга <sql>, полагая что ALTER TABLE IGNORE заткнет ошибки, в случае если поля уже есть, которые я хочу вставить. Оказывается, что IGNORE влияет на другое. И тоже пришлось перемещать код по изменению структуры в обработчик, потому что любая ошибка в <sql> прерывает установку. Жаль, что Джумловцы не поддержали атрибут у тэга "sql", например "silent=1", было бы очень элегантное решение.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Жаль, что Джумловцы не поддержали атрибут у тэга "sql", например "silent=1", было бы очень элегантное решение.
ну сделай реализацию такого функционала применимо к Joomla 1.6 и предложи разработчикам в виде патча - есть шанс, что включат. В 1.5 уже ничего нового добавлять не будут 100%...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Автоматическое обновление модуля. Реально?

Автор mr.shusty

Ответов: 23
Просмотров: 3920
Последний ответ 25.06.2014, 00:27:24
от fsv
Требуется создание новых компонентов и модернизация существующих

Автор t-a-p

Ответов: 0
Просмотров: 1100
Последний ответ 25.05.2014, 12:56:22
от t-a-p
Обновления собственных компонентов

Автор Keanor

Ответов: 6
Просмотров: 1668
Последний ответ 09.01.2012, 15:42:17
от Keanor
Разработка компонентов для Joomla 1.5 (функциональность admin-панели)

Автор klubnichkaaa

Ответов: 13
Просмотров: 8696
Последний ответ 12.06.2011, 22:21:12
от max.mix
[how to] Как использовать группы пользователе CB в написании своих компонентов

Автор nonick

Ответов: 1
Просмотров: 2057
Последний ответ 15.07.2010, 02:33:48
от nonick