Новости 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

Перевод и публикация интервью с Joomla евангелистом на греческом портале Joomla

Перевод и публикация интервью на греческом портале Joomla 🇬🇷

Утро, просматриваешь входящие письма и изучаешь новости и внезапно обнаруживаешь, что инициатива, которую ты начал, подхватывается другими людьми. 🎉

Недавно я взял интервью у Билла (Василиса) Коциаса - руководителя студии, читающего лекции в университете и популяризатора Joomla в Греции. Это интервью из журнала NorrNext, в оригинале на английском, теперь доступно на греческом языке и опубликовано на портале joomla.gr. 🎉

До чего же приятно… 😇😊 Работа замечена и с ней посчитали необходимым ознакомить аудиторию страны, в которой Билл читает лекции. И это солнечная Греция - страна, страна, с которой Россию многое связывает. 🇬🇷🇷🇺🕊

Смотрю на греческий алфавит и тут же рисуются картины белоснежных зданий в окружении винограда и амфор, красивых женщин в сандалиях и мужественных воинов, охраняющих покой полисов, в которых ученые мужи работают над трудами, позже вошедшими в века. Красиво! 😇Но вернемся к интервью.

Из него вы узнаете, что в Греции доля Joomla среди CMS занимает порядка 30-40%. По моему мнению это - самый высокий показатель во всем мире. Также чтение лекций о Joomla в университетах позволит привести новых пользователей и к тому же молодое поколение. Ну и огромное кол-во сертификтатов Билла на стене (смотрим фото в статье) свидетельствует о том, что Joomla может применяться как профессиональный инструмент.

🌐 Оригинальное интервью (на английском)
🇬🇷 Интервью на греческом портале (joomla.gr)

Что насчет перевода на русский? Увы, времени всего 24 часа в сутках. Я продолжаю готовить новые интервью. Возможно, после завершения выпуска журнала, рассмотрю перевод некоторых интервью на русский. Но я об этом не говорил. 😊 В блоге @eugenius_blog публикую анонсы интересных событий из мира Joomla, интервью, уроки и полезные советы, а также делюсь мыслями:, связанными с разработкой и веб-дизайном.

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

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Добрый день.  Прошу прощение за ломанный язык :)  просто в терминалогии плаваю....

Сейчас пытаюсь разобраться  с написанием модулей для JS.
Возник некий вопрос :)

Как можно получить так сказать "доступ" к файлам в етом каталоге  ...\components\com_jshopping\tables\....

Попробовал таким образом:
          $test=JSFactory::getTable('attributvalue.php', 'jshop');

Сайт выдаёт ошибку:
Таблица attributvalue.php не поддерживается. Файл не найден.

В модулях вообше возможно ссылаться на те файлы ??  , там запросы к БД уже прописаны,
Кроме как через етот класс:        Но там мало доступных, для обработки
         $get_all_attr=JSFactory::getAllAttributes($resformat = 1);   

Или писать в своём модуле свои запросы.

Или если модуль пишу для себя, то в файл factory.php  добавить свои функции-запросы, Понимаю что будет затираться при обновлениях, чёрт с ним...
Помогите пожлуста разобраться с етой логикой... :(
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Создание модуля, подключение getTable
« Ответ #1 : 21.05.2015, 14:49:48 »
сделайте JTable::addIncludePath(JPATH_COMPONENT_SITE.'/tables'); до JSFactory::getTable
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Создание модуля, подключение getTable
« Ответ #2 : 21.05.2015, 14:56:00 »
Делал, у меня так и прописано :(

JTable::addIncludePath(JPATH_ROOT.'/components/com_jshopping/tables');      // Работа с таблицами JoomShoping   

Или там надо прописывать определённый файл ? :
JTable::addIncludePath(JPATH_ROOT.'/components/com_jshopping/tables/attributvalue.php');      // Работа с таблицами JoomShoping
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Создание модуля, подключение getTable
« Ответ #3 : 21.05.2015, 15:11:44 »
Попробовал вывести что храниться в той ерунде:

$tttttttttt=   JTable::addIncludePath(JPATH_ROOT.'/components/com_jshopping/tables');      // Работа с таблицами JoomShoping   
      echo'<pre>***********************************';
      print_r ($tttttttttt);
      echo'</pre>***********************************';

Дало такой массив :)
array
(
    
  • => сайт/administrator/components/com_jshopping/table
  • [1] => сайт/com_jshopping/tables
        [2] => сайт/components/com_jshopping/tables
        [3] => сайт/libraries/joomla/table
    )

« Последнее редактирование: 21.05.2015, 15:18:56 от avantyrist »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Создание модуля, подключение getTable
« Ответ #4 : 21.05.2015, 16:03:24 »
тьфу ты, слепой становлюсь. не увидел сразу лишнее

          $test=JSFactory::getTable('attributvalue.php', 'jshop');

Или там надо прописывать определённый файл ? :

нет, каталог
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Создание модуля, подключение getTable
« Ответ #5 : 21.05.2015, 16:27:18 »
Таки да :) то лишнее.

Но чёто мои ожидания были другие :))

   $test=JSFactory::getTable('attributvalue', 'jshop');
      echo'<pre>********************';
      print_r($test);
      echo'</pre>**************';

Там такое вывело, я чуток в шоке был.....   :o

'attributvalue'  --  ето название файла в папке '/components/com_jshopping/tables  ?
, 'jshop'    --  что ето за параметр ?

Как можно обратиться к определённой функции файла attributvalue.php  ?  например       function getAllAttributeValues(){
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Создание модуля, подключение getTable
« Ответ #6 : 21.05.2015, 16:34:50 »
как к методу объекта обращаются, так и обратится - $test->getAllAttributeValues(). доступные методы вы уже поняли где смотреть. плюс поскольку это расширение класса, то $test также наследует и все методы, которые есть у родителя. например, jshopAttributValue является потомком JTableAvto, и хотя у jshopAttributValue например нет (переопределенного) метода getBuildQueryListProductDefaultResult(), вы тем не менее можете вызвать его $test->getBuildQueryListProductDefaultResult(), потому что он есть у родителя. а JTableAvto в свою очередь является наследником JTable. в общем, вам надо по крайней мере изучить ООП, если хотите продвинуться дальше. а потом изучить уже классы Joomla
« Последнее редактирование: 21.05.2015, 16:38:26 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Создание модуля, подключение getTable
« Ответ #7 : 21.05.2015, 16:44:02 »
dmitry_stas

Код
JTable::addIncludePath(JPATH_ROOT.'/components/com_jshopping/tables');		// Работа с таблицами JoomShoping
$testAttr=JSFactory::getTable('attributvalue', 'jshop');
$testAttr->getAllAttributeValues();
echo'<pre>********************';
print_r($testAttr);
echo'</pre>**************';

Дело в том что я так и делал, чёто сразу пример не написал

Но оно выводит там всё подрят, такой масивчег получается что мама не горюй.....
Я щас читаю очень много всего, и от етого всего винигрет получился в голове ужасный, начинаеш тыкаться кудато, ступор, потом опять ступор, какието мелочи, на которые в итоге тратиш уйму времени, каша >:(
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Создание модуля, подключение getTable
« Ответ #8 : 21.05.2015, 16:50:59 »
чем я то могу помочь? если вам будет от этого легче, то не вы один такой. у всех когда то была в голове каша и винегрет. изучайте, литературы масса, все общедоступно. и как правило бесплатно, не то что раньше. я в свое время ActionScript флешевский учил по книге, за которую отдал 120 баксов. а сейчас - их два вагончика в интернете на любой вкус. так что через тернии к звездам :) ну а нет - то всегда есть ком. раздел.

Но оно выводит там всё подрят, такой масивчег получается что мама не горюй.....

а что вы ожидаете увидеть, делая print_r($testAttr)? что присвоили этой переменной - то и выводит.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Создание модуля, подключение getTable
« Ответ #9 : 21.05.2015, 17:01:33 »
честно думал увижу результат запроса к БД :))
Наподобии того как выходит результат  через Класс,  JSFactory

$characteristic_3= JSFactory::getAllProductExtraFieldValueDetail();   // Выводит масив всех названий опций характеристик

КомРаздел, ето понятно, меня интерисует, не сделанное кемто решение, меня интерисует КАК ето сделать :) хочется понять, научиться
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Создание модуля, подключение getTable
« Ответ #10 : 21.05.2015, 17:13:57 »
ОЙ ТУПАНУЛ ОПЯТЬ :)

   $testAttr=JSFactory::getTable('attributvalue', 'jshop');
   $testAttrList =$testAttr->getAllAttributeValues();
         echo'<pre>********************';
         print_r($testAttrList);
      echo'</pre>**************';

Усё теперь получаю конкретный результат запроса к БД :)

dmitry_stas  подскажите пожалуйста:
Допустим если меня устраивают результаты Етих запросов,  при писании модуля, лучше использовать такой метод, в плане нагрузки на сайт? -- который выше описан.


Либо лучше создавать допустим некий файл  helper.php   в нём создать некий клас JSTest, с функцией getTestTraliVali там делать нужные запросы в БД,
и потом в основном файле модуля подключать таким макаром:
    require_once (JPATH_SITE.'/modules/mod_test/helper/helper.php');

    $trali_vali = JSTest::getTestTraliVali();   // в итоге получаю доступ к Результирующему масиву
« Последнее редактирование: 21.05.2015, 17:18:24 от avantyrist »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Создание модуля, подключение getTable
« Ответ #11 : 21.05.2015, 19:02:55 »
ну если то, что вам нужно, уже написано, то зачем писать это второй раз? другое дело, что иногда бывает такое, что вроде как нужные методы уже есть, но для получения результата их надо выполнить скажем 3 раза (т.е. 3 запроса в базу), вместо одного, если переписать этот код в своем хелпере. тогда конечно имеет смысл. но если будете принимать такое решение, обратите внимание, что в Joomla вообще, и в ЖШ в частности, очень много случаев, когда метод возвращает static переменную, которая определяется всего 1 раз, независимо от того, сколько раз вы вызываете метод.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Создание модуля, подключение getTable
« Ответ #12 : 22.05.2015, 10:07:55 »
Благадарю за обсуждение темы
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

JoomShopping создание заказа с помощью js

Автор CoolBick

Ответов: 0
Просмотров: 660
Последний ответ 21.02.2022, 22:39:58
от CoolBick
Создание псевдонима товара после импорта товара

Автор worldmen

Ответов: 12
Просмотров: 2042
Последний ответ 01.09.2020, 21:34:40
от dmitry_stas
Шаблоны модуля mod_jsh_categories_and_products

Автор goga_pgasovav

Ответов: 3
Просмотров: 648
Последний ответ 27.07.2020, 19:45:11
от kit2m2
Нужен совет! Проблема c выводом модуля фильтра

Автор Lemonez

Ответов: 4
Просмотров: 797
Последний ответ 28.04.2020, 07:40:34
от draff
Создание html шаблона для отправки на Email

Автор tima

Ответов: 9
Просмотров: 1304
Последний ответ 26.07.2018, 20:24:04
от tima