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

V1RTUS

  • Захожу иногда
  • 204
  • 1 / 1
Добрый день!

После установки шаблона начала вылезать ошибка при смене языкового пакета сайта на русский. В Админке все ок. А на сайте висит вот такое сообщение:
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() [<a href='datetime.--construct'>datetime.--construct</a>]: Failed to parse time string (12 Р?СЋРЅСЊ 2013) at position 0 (1): Unexpected character' in Z:\home\stud2.ru\www\libraries\joomla\utilities\date.php:121 Stack trace: #0 Z:\home\stud2.ru\www\libraries\joomla\utilities\date.php(121): DateTime->__construct('12 ? 201...', Object(DateTimeZone)) #1 Z:\home\stud2.ru\www\libraries\joomla\factory.php(552): JDate->__construct('12 ? 201...', 'UTC') #2 Z:\home\stud2.ru\www\libraries\joomla\html\html.php(712): JFactory::getDate('12 ? 201...', 'UTC') #3 [internal function]: JHtml::date('12 ? 201...', 'M d, Y') #4 Z:\home\stud2.ru\www\libraries\joomla\html\html.php(222): call_user_func_array(Array, Array) #5 Z:\home\stud2.ru\www\libraries\joomla\html\html.php(103): JHtml::call(Array, Array) #6 Z:\home\stud2.ru\www\templates\bt_magazine\html\mod_bt_contentslider\blocknews.php(87): JHtml::_('date', '12 ? 201...', 'M in Z:\home\stud2.ru\www\libraries\joomla\utilities\date.php on line 121

Я так понял главный посыл сообщения кроется в этой фразе: Failed to parse time string (12 Р?СЋРЅСЊ 2013). Где искать эту ошибочную дату? Есть идеи? Почему именно при смене языка вылезает?
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Проверьте доступны ли папки Joomla, включая вложенные, на запись и корректно ли указаны пути к папкам logs и tmp.
*

V1RTUS

  • Захожу иногда
  • 204
  • 1 / 1
Проверьте доступны ли папки Joomla, включая вложенные, на запись и корректно ли указаны пути к папкам logs и tmp.

Если Вы имеете в виду папку www\libraries\joomla то в свойствах стоит "Только чтение". Но я прошелся по всем своим сайтам. Везде стоит тот же аттрибут. Винда не дает изменить. (http://yadi.sk/d/yDJNG_nwGXqQ8)

Что касается путей к папкам logs и tmp то вроде все ок:
public $log_path = 'Z:\\home\\stud2.ru\\www/logs';
public $tmp_path = 'Z:\\home\\stud2.ru\\www/tmp';

(Сервак на Denwer3_Base_2012-09-16_a2.2.22_p5.3.13)   
*

V1RTUS

  • Захожу иногда
  • 204
  • 1 / 1
Мне в принципе английская локализация на этом сайте не нужна. Могу ли я подменить файлы с англ. локализацией на русскую? На англ. локализации все работает. По идее если подменить файлы, то должно все работать. Даже если не будет, то хоть найду какой из файлов локализации виноват и методом исключения доберусь до ошибки.

Пробовал подменить имена файлов в en-GB.xml. Чет не прокатило.
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
public $log_path = 'Z:\\home\\stud2.ru\\www/logs';

Попробуйте либо:
public $log_path = 'Z:\\home\\stud2.ru\\www\\logs';
либо:
public $log_path = 'Z:/home/stud2.ru/www/logs';
*

V1RTUS

  • Захожу иногда
  • 204
  • 1 / 1
public $log_path = 'Z:\\home\\stud2.ru\\www/logs';

Попробуйте либо:
public $log_path = 'Z:\\home\\stud2.ru\\www\\logs';
либо:
public $log_path = 'Z:/home/stud2.ru/www/logs';


Оба варианта дают: Parse error: syntax error, unexpected T_PUBLIC, expecting ',' or ';' in Z:\home\stud2.ru\www\configuration.php on line 56
*

V1RTUS

  • Захожу иногда
  • 204
  • 1 / 1
Решил проблему.

В шаблоне есть папка HTML. Переименовал и все пошло.. но шаблон попортился.. потом методом перебора все папки внутри переименовывал и добрался до нужного файла.

Спасибо за участие!
« Последнее редактирование: 22.01.2014, 19:13:03 от V1RTUS »
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
у вас с шаблоном действительно проблема.
http://joomlaforum.ru/index.php/topic,246661.msg1413264.html#msg1413264
отключите как написано - показать дату где следует.
или покажите код Z:\home\stud2.ru\www\templates\bt_magazine\html\mod_bt_contentslider\blocknews.php. можно будет поправить, наверное.
*

V1RTUS

  • Захожу иногда
  • 204
  • 1 / 1
у вас с шаблоном действительно проблема.
http://joomlaforum.ru/index.php/topic,246661.msg1413264.html#msg1413264
отключите как написано - показать дату где следует.
или покажите код Z:\home\stud2.ru\www\templates\bt_magazine\html\mod_bt_contentslider\blocknews.php. можно будет поправить, наверное.


Вы правы! Именно этот файл и давал ошибку.
Отключил и вроде все работает. Не стал заморачиваться... Хотя не известно где это вылезет в дальнейшем. Если знаете как подправить, файл приложил: http://yadi.sk/d/80299JW6GY9Pr
*

V1RTUS

  • Захожу иногда
  • 204
  • 1 / 1
То что просили отключить... Отключил показ даты. Ошибка та же.
« Последнее редактирование: 22.01.2014, 19:42:20 от V1RTUS »
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Я, честно говоря, не очень разбираюсь, как Joomla работает с датами, но мне кажется, что проблема в формате даты с русским языком.

Попробуйте в файле, который вы выложили, отформатировать вывод, заменив строку 88
Код
<?php echo JHTML::_('date', $row->date , JText::_('BT_CREATEDON_TEMP')); ?>
на
Код
<?php echo JHTML::_('date', $row->date, 'Y-m-d H:i'); ?>

и строку 121
Код
<?php echo JHTML::_('date', $row->date , JText::_('BT_CREATEDON_TEMP')); ?>
на
Код
<span class="bt-date"><?php echo JHTML::_('date', $row->date, 'Y-m-d H:i'); ?></span>

на предмет ухода ошибки.
« Последнее редактирование: 23.01.2014, 00:04:19 от capricorn »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться