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

LiFF_Spb

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Модуль whosonline
« : 17.08.2010, 13:46:10 »
Уважаемые форумчане!
Помогите разобраться пожалуйста с такой траблой:
на главной странице сайта воткнут модуль whosonline, который соответственно показывает количество людей на сайте в данный момент. Установлена англоязычная Joomla и поэтому, как я понимаю, модуль тоже на не русском. Как поменять шапку модуля нашёл через админку. Но не могу поменять как мне нужно сам текст. Сейчас он такой: We have 1 guest online. Хочу поменять эту фразу на русский язык. Нашёл, что эта фраза содержится в коде в файле по адресу modules/mod_whosonline/tmpl/default.php. Но можно менять только слова We have  и online. Слово guest поменять не получается. Если его менять, то пропадает само количество пользователей, либо вообще модуль не отображается. Что делать? Вот сам код этого файла:

<?php // no direct access
defined('_JEXEC') or die('Restricted access');

if ($showmode == 0 || $showmode == 2) :
    if ($count['guest'] != 0 || $count['user'] != 0) :
        echo JText::_('Мы имеем'). '&nbsp;';
      if ($count['guest'] == 1) :
          echo JText::sprintf('guest', '1');
      else :
          if ($count['guest'] > 1) :
             echo JText::sprintf('guest', $count['guest']);
         endif;
      endif;

      if ($count['guest'] != 0 && $count['user'] != 0) :
          echo '&nbsp;' . JText::_('and'). '&nbsp;';
       endif;

      if ($count['user'] == 1) :
          echo JText::sprintf('member', '1');
      else :
          if ($count['user'] > 1) :
             echo JText::sprintf('members', $count['user']);
         endif;
      endif;
      echo '&nbsp;' . JText::_('он-лайн');
    endif;
endif;

if(($showmode > 0) && count($names)) : ?>
    <ul>
<?php foreach($names as $name) : ?>
       <li><strong><?php echo $name->username; ?></strong></li>
<?php endforeach;  ?>
   </ul>
<?php endif;

Или проблема зарыта глубже?
« Последнее редактирование: 17.08.2010, 15:14:07 от LiFF_Spb »
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Re: Модуль whosonline
« Ответ #1 : 17.08.2010, 14:14:21 »
я думаю что тут надо поменять     echo JText::sprintf('guest', $count['guest']);
*

Darkick

  • Завсегдатай
  • 1142
  • 239 / 1
Re: Модуль whosonline
« Ответ #2 : 17.08.2010, 14:46:36 »
может на русский всё-таки переключиться для начала?
*

LiFF_Spb

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: Модуль whosonline
« Ответ #3 : 17.08.2010, 15:13:05 »
Darkick, спасибо. Начну тогда сейчас с русификации. Надеюсь, это не сложно :) Пошёл бороздить инет.

Infosakh, да, я тоже так думал, но менял и в JText::sprintf('guest', '1') и в JText::sprintf('guest', $count['guest'])... Слово меняется на нужное мне, но пропадает счётчик! То есть получается фраза типа "Мы имеем гостей он-лайн"  ;D, а вот самой цифры нет! :( Не пойму в чём загвоздка.
« Последнее редактирование: 17.08.2010, 15:24:40 от LiFF_Spb »
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Re: Модуль whosonline
« Ответ #4 : 17.08.2010, 15:25:16 »
ну так гостя заменили не?  ^-^ странно
*

LiFF_Spb

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: Модуль whosonline
« Ответ #5 : 17.08.2010, 17:34:48 »
Пока не удаётся. Не могу воткнуть русский язык. Скачал пакет 1.5.9. Залил его в папку Language. Он появился в админке, назначил его языком по умолчанию... А изменений никаких. Чё-то я не то делаю.
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Re: Модуль whosonline
« Ответ #6 : 17.08.2010, 17:51:31 »
странновато всё это, чтобы изменить заголовки Вы лезете в default.php, а тут языковой пакет скачали?  ^-^
*

LiFF_Spb

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: Модуль whosonline
« Ответ #7 : 17.08.2010, 19:51:30 »
Ну просто я так сказать продвинутый юзер... Но толку от того, что я залез в default.php пока нет. Так как php всё равно не знаю, как и программирование в целом. :) Просто думал, что тупо получится изменить нужное мне слово и делов. А всё хитрее оказывается. Хм... Как мне кажется, возможно надо менять где-то в дебрях Joomla название переменной guest на нужное мне, если таковая вообще есть... Хотя может это мои догадки. В любом случае, буду рад конструктивным предложениям! В крайнем случае, попробую воткнуть сразу русскую Joomla. Не подскажите, какая щас сейчас последняя версия? Но всё равно от этого проблема полностью не решится, так как всё равно я не смогу вписать конкретное нужное мне слово вместо Гостя. Поэтому хотелось бы обойтись малыми силами. Вот такая щас картина.
« Последнее редактирование: 17.08.2010, 19:55:32 от LiFF_Spb »
*

Gover

  • Захожу иногда
  • 189
  • 3 / 0
Re: Модуль whosonline
« Ответ #8 : 17.08.2010, 20:01:51 »
В папке language/ru-RU (вроде так) должен быть русский языковой файл для вашего модуля с названием типа ru-RU.mod_whosonline.ini.
Если такового нет, поищите соответствующий файл в папке en-EN (en-EN.mod_whosonline.ini английский соответственно), переведите все записи в нем на русский, сохраните в UTF-8 без BOM и положите его в папку с русскими переводами.
На 99% уверен что файл с переводом отсутствует.
*

LiFF_Spb

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: Модуль whosonline
« Ответ #9 : 17.08.2010, 20:38:15 »
Gover, огромное спасибо! Через en-GB.mod_whosonline.ini действительно всё получилось (так как локализацию залил, но с ней какая-то трабла)!
Изменил в файле строчки
GUEST=%s гость
GUESTS=%s гостя
и получил

Спасибо всем учавствовавшим в решении проблемы! И до новых встреч :)

P.S. Жаль плюсики не могу ставить
*

sklins

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Re: Модуль whosonline
« Ответ #10 : 18.08.2010, 19:17:41 »
Подскажу один не большой хак, который мне пригодился сёдня. Если хочешь увеличить кол-во пользователей онлайн, то лезь в файл modules\mod_whosonline в файл helper.php.
Код
		$user_array  = 0;
$guest_array = 0;
соответственно user - пользователи, а guest - гости. ;)
*

LiFF_Spb

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: Модуль whosonline
« Ответ #11 : 20.08.2010, 21:51:15 »
Да не, на сайте нет регистрации и все есть гости. Да и необходимости накручивать юзеров нет. Так, чтобы знать чисто. Но спасибо за совет. :) Ток я не особо понял чё делать) Задать начальное значение отличное от нуля?
*

Phoenix88

  • Захожу иногда
  • 81
  • 3 / 0
  • Нет предела самосовершенствованию
Re: Модуль whosonline
« Ответ #12 : 31.01.2011, 19:58:20 »
Подскажите, пожалуйста, возможно ли в модуле сделать ссылки на профили JomSocial пользователей онлайн? И если да, то попрошу код :)
*

Klaxonn

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Модуль whosonline
« Ответ #13 : 13.03.2011, 08:19:17 »
Можно ли изменить отображение пользователей с "name" на "username"

А то сейчас модуль выводит список логинов пользователей :(
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

модуль Newsflash: как вывести дату?

Автор joomloid

Ответов: 5
Просмотров: 3669
Последний ответ 03.04.2019, 12:25:27
от pH43
Как отредактировать модуль mod_yoo_slider?

Автор vitaliy4us

Ответов: 0
Просмотров: 2579
Последний ответ 06.12.2017, 16:14:45
от vitaliy4us
Модуль "Случайное изображение"

Автор irina 4444

Ответов: 16
Просмотров: 8578
Последний ответ 26.05.2017, 12:47:56
от gvg
Стандартный модуль Авторизации расположить горизонтально

Автор reg-ad-site

Ответов: 34
Просмотров: 9771
Последний ответ 17.04.2017, 12:53:45
от speedrage
Как вызвать модуль с текстом, если не работает админка?

Автор kirill-juk

Ответов: 2
Просмотров: 2363
Последний ответ 19.11.2016, 00:43:18
от SeBun