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

jservice

  • Захожу иногда
  • 118
  • 1 / 0
Re: Fatal error: Call to undefined method UsersModelLogin::store()
« Ответ #30 : 22.07.2014, 13:50:11 »
Перед
Код: php
default:
  $model = $this->getModel('Login');
  break;
Добавьте:
Код: php
case 'regwebinar':
  $model = $this->getModel('regwebinar');
  break;

Добавил в роутер

Спойлер
[свернуть]

case 'regwebinar':
$model = $this->getModel('regwebinar');
 break;

выше

default:
               
$model = $this->getModel('Login');
               
break;

теперь  выдает   Fatal error: Class UserViewRegwebinar cannot extend from interface JView in /home/сайт/3/components/com_users/views/regwebinar/view.html.php on line 28


и в view.html  сейчас

Спойлер
[свернуть]

Что то еще ему не хватает
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Fatal error: Call to undefined method UsersModelLogin::store()
« Ответ #31 : 22.07.2014, 13:59:15 »
Должно быть:
Код: php
class UsersViewRegwebinar extends JViewLegacy
class UsersModelRegwebinar extends JModelLegacy
*

jservice

  • Захожу иногда
  • 118
  • 1 / 0
Re: Fatal error: Call to undefined method UsersModelLogin::store()
« Ответ #32 : 22.07.2014, 14:01:09 »
о теперь что то сдвинулось  ^-^

Но теперь выдало:

1146 Table 'stplast_update.art3_regwebinar' doesn't exist SQL=INSERT INTO art3_regwebinar (`id`, `username`, `phone`, `email`, `organization`, `summ`, `eventid`, `url`, `title`, `datetime`, `paidstatus`) VALUES ('','','','','','780','265199','http://3.web-studio.biz.ua/component/users/?view=regwebinar','СОСТАВЛЕНИЕ КРЕДИТНОГО БАЛАНСА','24.06.2014 16.00-18.00 (мск)',0)
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Fatal error: Call to undefined method UsersModelLogin::store()
« Ответ #33 : 22.07.2014, 14:31:37 »
о теперь что то сдвинулось  ^-^

Но теперь выдало:

1146 Table 'stplast_update.art3_regwebinar' doesn't exist SQL=INSERT INTO art3_regwebinar (`id`, `username`, `phone`, `email`, `organization`, `summ`, `eventid`, `url`, `title`, `datetime`, `paidstatus`) VALUES ('','','','','','780','265199','http://3.web-studio.biz.ua/component/users/?view=regwebinar','СОСТАВЛЕНИЕ КРЕДИТНОГО БАЛАНСА','24.06.2014 16.00-18.00 (мск)',0)
ну вроде черным по белому написано что в базе stplast_update не существует таблицы art3_regwebinar
*

jservice

  • Захожу иногда
  • 118
  • 1 / 0
Re: Fatal error: Call to undefined method UsersModelLogin::store()
« Ответ #34 : 22.07.2014, 14:34:37 »
да это точно тут уже наверное мозги кипят какой день уже вожусь с компонентом жесть...
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

jservice

  • Захожу иногда
  • 118
  • 1 / 0
Re: Fatal error: Call to undefined method UsersModelLogin::store()
« Ответ #36 : 22.07.2014, 15:07:44 »
Господа  :D большое спасибо ! за помощ... реально сам бы врядле разобрался бы...Хоть и апгрейдил не один компонент со старых версий. но с таким еще не встречался. Хороший опыт получил от вашей помощи... Хорошо что есть такой форум.  ;)Респект и уважуха Вам....
*

kolio

  • Захожу иногда
  • 91
  • 11 / 4
Re: Fatal error: Call to undefined method UsersModelLogin::store()
« Ответ #37 : 17.02.2015, 15:41:54 »
у меня была аналогичная проблема с кодом:

Код
if ($model = $this->getModel('blablabla')) {
$document = JFactory::getDocument();
$vType = $document->getType();
$view = $this->getView('someview', $vType);
$view->setModel($model, true);
}

переделал на:
Код
if ($model = $this->getModel('blablabla')) {
$document = JFactory::getDocument();
$vType = $document->getType();
$vName = $this->input->get('view', 'someview');
$view = $this->getView($vName, $vType);
$view->setModel($model, true);
}

и всё стало окей
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Fatal error: Cannot redeclare showQuestions() (previously declared in

Автор sergvlask

Ответов: 2
Просмотров: 1946
Последний ответ 01.12.2013, 13:24:42
от sergvlask
JFactory::getUser($id); fatal error

Автор alxcube

Ответов: 11
Просмотров: 3553
Последний ответ 05.08.2013, 12:39:08
от alxcube