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

samrisbe

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Добрый день!  ^-^
Посоветуйте начинающему как проще сделать следующую функцию на движке Joomla 3.
У меня есть файл в котором две колонки: адрес, лицевой счет мне надо чтоб посетитель сайта мог введя адрес получить информацию лицевой счет соответствующий введенному адресу, посоветуйте как это сделать? если на форуме есть такая тема то пожалуйста ссылочку скиньте.  ;)
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Вывод информации с txt файла
« Ответ #1 : 22.11.2016, 18:34:06 »
набросать модуль или простенький компонент, компонент позволит работать с бд и в дальнейшем расширять возможности, модуль более ограниче и будет работать только с файлом напрямую, что может быть не оч.производительно (хотя тут вопрос квалификации разработчика)
*

samrisbe

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Вывод информации с txt файла
« Ответ #2 : 23.11.2016, 09:35:44 »
Эти данные в бд отсутствуют, если их можно в бд занести то будет лучше но они обновляются и их надо будет обновлять в бд. Я сам немного разбираюсь в с++, если знаете где пример есть похожий на мою задачу, я попробую сделать самостоятельно и частично при помощи более опытных форумчан.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Вывод информации с txt файла
« Ответ #3 : 23.11.2016, 10:02:02 »
Если файл не очень большой и содержит всего 2 колонки, то достаточно модуля. В принципе это простая форма с простым обработчиком, можно все в один скриптик засунуть (для вас это не должно быть сложно, раз вы уже пишете на С++). Оформление в модуль решает некоторые вопросы безопасности (проверка token, обращение к файлу не напрямую, ограничение прав пользователя...) и оформления вывода с помощью инструментов Joomla API. Как выглядит структура файла?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

samrisbe

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Вывод информации с txt файла
« Ответ #4 : 23.11.2016, 13:50:30 »
Структура файла выглядит так:
лицевой номер /улица номер дома и подъезд / номер квартиры
001256  Московская 33 п.1  1
001257  Московская 33 п.1  2
001258  Московская 33 п.1  3

Структуру могу сделать любую (файл генерирую из БД Acces) если надо могу поставить разделители между колонками например так: 001256;Московская 33 п.1;1
и таких строк в файле порядка 30000 (тридцать тысяч) и особо уже не увеличится.
Я подумал что от дурака надо сделать защиту, чтоб адрес не вводился а выбирался по типу выпадающего списка затем исходя из выбора адреса второй выпадающий список с номерами квартир только из выбранного адресе, и после выбора сделать проверку что все выбрано если нет указать какой параметр не выбран, и если все нормально выводить лицевой соответствующего адреса и квартиры.
Это реализовать на С++ могу с закрытыми глазами, а для web не хватает знаний, но если увижу пример попытаюсь вникнуть.
вот например как на С++ реализуется: 
Код
  //загружаю в StringList строки для обработки из txt файла
  word->LoadFromFile(ExtractFilePath(Application->ExeName)+"Spiski//adresa.txt");
  //привожу к верхнему регистру выбранный пользователем адрес и квартиру
  alladres->CommaText = jekadr  + kvart ;//из списка адрес и квартира
  //привожу к верхнему регистру адрес и квартиру выбранный пользователем
  adres = String( alladres->Strings[0] + " " + alladres->Strings[1] ).UpperCase();
  //начинаем обработку полученных данных
  //перебираю строки из списка в цикле
  for(int i = 0; i < word->Count; ++i)
    {
    //привожу к верхнему регистру адрес из списка
    list->CommaText = word->Strings[i];
    //передаю в переменные типа String данные текущей строки
    //лицевой счет
    licevoi = list->Strings[0];
    //адрес из списка адресов название улицы номер дома и номер квартиры
    jekadr = String(list->Strings[1] + " " + list->Strings[2] + " " + list->Strings[3]).UpperCase();
           
    //если есть совпадение пробуем внести изменение
    if(adres == jekadr)
      {
      Edit1->Text = licevoi; // отображаю лицевой счет выбранного адреса
      }
    }
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Вывод информации с txt файла
« Ответ #5 : 23.11.2016, 14:45:21 »
в php есть такая функция для csv http://php.net/manual/ru/function.fgetcsv.php
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Вывод информации с txt файла
« Ответ #6 : 23.11.2016, 15:03:19 »
Для разраобтки самое простое будет модуль \ плагин которые будет дергать дынные скажем из cvs, а вот для использования удобнее будет простенький компонент, тут и редактирование и поиск и сортировка и добавление все удобно.
Для создания комопнента вам хвтаит официальной документации https://docs.joomla.org/J3.x:Developing_an_MVC_Component Если с С++ работает то проблем с создание и логикой быть не должно
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

samrisbe

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Вывод информации с txt файла
« Ответ #7 : 23.11.2016, 19:37:04 »
Спасибо всем. Буду пробовать. Начну как 10 лет назад с "Hello world"  ;)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод новостей на главной

Автор Mick_20

Ответов: 0
Просмотров: 1937
Последний ответ 11.03.2023, 08:38:25
от Mick_20
Компонент, который парсит данные из текстового файла.txt в БД

Автор emiraizh

Ответов: 0
Просмотров: 1420
Последний ответ 27.12.2022, 11:13:53
от emiraizh
Вывод статей на основе рейтинга

Автор happy46

Ответов: 0
Просмотров: 856
Последний ответ 26.07.2020, 19:41:50
от happy46
Вывод кода (отображение) в материале

Автор Vekach

Ответов: 1
Просмотров: 909
Последний ответ 03.05.2020, 19:05:30
от beliyadm
Вывод новостей на странице списком по датам?

Автор D2R

Ответов: 6
Просмотров: 1305
Последний ответ 07.11.2019, 15:30:46
от AlekVolsk