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

claus

  • Захожу иногда
  • 183
  • 4 / 1
  • Тиха украинская ночь, но сало надо перепрятать!
по кодировке вопрос.
« : 30.03.2009, 16:55:22 »
(при регистрации) включил "Проверка имени в реальном времени AJAX" - подтверждение пишет в utf-e (т.е. крякозябрами), а у меня все в 1251, перекопал, а где подправить не нашел. Вылазило такое и еще где-то, но не запомнил. СВ второй, стоит на жустине.
Кто сталкивался?
*

Butos

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Re: по кодировке вопрос.
« Ответ #1 : 07.05.2009, 00:07:40 »
Я тоже с этим столкнулся, но и разобраться не вышло... Подскажите как подправить...
*

claus

  • Захожу иногда
  • 183
  • 4 / 1
  • Тиха украинская ночь, но сало надо перепрятать!
Re: по кодировке вопрос.
« Ответ #2 : 07.05.2009, 01:00:40 »
Так я это и не исправил - до сих пор гадость вылазит ^-^
*

HOLUC

  • Захожу иногда
  • 50
  • 9 / 0
Re: по кодировке вопрос.
« Ответ #3 : 09.05.2009, 13:54:58 »
Сталкивался с подобным, но только не в этом месте, а при попытке русифицировать календарь (тот, что в профиле помогает выбрать День Рождения). Там все решилось достаточно просто: ковертировал файл со скриптом в UTF-8. Попробуйте, может подойдет и в этом случае.

...Только не весь файл локализации переводите в UTF-8, а именно те две строки, которые отвечают за тот беспорядок. :)

p.s. А вообще, как-то странно работает эта проверка пользователей (если пользователь блокирован или не подтвержден администратором, то строка выводит сообщение об отсутствии/незанятости такого имени)... или это только у меня так?..
*

nikonor

  • Давно я тут
  • 513
  • 56 / 0
  • Content Grabber
Re: по кодировке вопрос.
« Ответ #4 : 04.06.2009, 17:49:25 »
ууууу блин ... это очень сильное колдунство  :o
ситуация с исправлением кодировки надписи, например Имя пользователя (логин) '%s' свободно, Вы можете продолжить. сказке подобна
текст для нее определен в _UE_USERNAME_DOESNT_EXISTS
делаю поиск по всем файлам архива .. это есть только в comprofiler.php, только на одной строке.
удаляю из языкового файла
Код
define('_UE_USERNAME_DOESNT_EXISTS',"Имя пользователя (логин) '%s' свободно, Вы можете продолжить.");
при проверке имени естествеено выдает вместо текста просто _UE_USERNAME_DOESNT_EXISTS
НО! если удалить _UE_USERNAME_DOESNT_EXISTS из файла comprofiler.php (а большее я ее ни где не нашел) и вернуть в языковой файл, то выводится опять корявый текст
ВОПРОС .... откуда, блин, он берется??!!!
*

LiberaLis

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: по кодировке вопрос.
« Ответ #5 : 16.07.2009, 01:36:05 »
Перепробовал поставить версии с 4х разных сайтов от английских до русских.. с патчами, плагинами, даже в админку кое какие файлы изменял. Но результат один: либо английский язык, либо кракозябры.

Полностью от этого излечиться не могу. Тот языковой файл что везде пихают -мне почему то не помогает. Почему? Не знаю..

У меня эти квадратики уже в глазах стоят..

Помогите кто может! Или хотя бы догадывается - где может быть причина.
*

aspidy

  • Завсегдатай
  • 1008
  • 55 / 1
  • Миграция joomla 1.0-1.5-2.5
Re: по кодировке вопрос.
« Ответ #6 : 16.07.2009, 05:33:38 »
Попробуй в includes поменять файл

[вложение удалено Администратором]
Мелкий ремонт. skype poisk-plus
*

LiberaLis

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: по кодировке вопрос.
« Ответ #7 : 16.07.2009, 15:12:39 »
Не помогло.. Видно это судьба.

Но все равно спасибо.
*

candro2

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Re: по кодировке вопрос.
« Ответ #8 : 30.07.2009, 15:16:50 »
в \components\com_comprofiler\comprofiler.html.php добавил
Код
function win_utf8 ($in_text){
$output="";
$other[1025]="Ё";
$other[1105]="ё";
$other[1028]="Є";
$other[1108]="є";
$other[1030]="I";
$other[1110]="i";
$other[1031]="Ї";
$other[1111]="ї";

for ($i=0; $i<strlen($in_text); $i++){
if (ord($in_text{$i})>191){
  $output.="&#".(ord($in_text{$i})+848).";";
} else {
  if (array_search($in_text{$i}, $other)===false){
   $output.=$in_text{$i};
  } else {
   $output.="&#".array_search($in_text{$i}, $other).";";
  }
}
}
return $output;
}

в components\com_comprofiler\plugin\user\plug_cbcore\cb.core.php
ищем строку для перекодировки (например
Код
$html = ( '<span class="cb_result_ok">' . sprintf( ISOtoUtf8( _UE_USERNAME_DOESNT_EXISTS ), htmlspecialchars( $username ) ) . '</span>' );

сообщение "Имя Пользователя '%s' свободно для регистрации: Вы можете продолжить процедуру." ) меняем на
Код
$html = ( '<span class="cb_result_ok">' . win_utf8(( _UE_USERNAME_DOESNT_EXISTS ), htmlspecialchars( $username ) ) . '</span>' );
  и так дальше, только параметр '%s' не отрабатывает, я его в языковом файле удалил.

вобщем заменил в обоих файлах sprintf( ISOtoUtf8 на win_utf8
вирт 1.1.3 joostina 1.2
« Последнее редактирование: 30.07.2009, 15:25:00 от candro2 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вопрос от "Чайника" Форма Авторизации не работает

Автор Jon Silver

Ответов: 4
Просмотров: 2236
Последний ответ 22.04.2014, 18:33:44
от Jon Silver
Вопрос по Groupjive 2.0.1

Автор Santana

Ответов: 7
Просмотров: 2566
Последний ответ 25.10.2011, 23:11:44
от Santana
Вопрос по модулю CBlogin

Автор arts

Ответов: 5
Просмотров: 2226
Последний ответ 04.01.2011, 22:19:33
от arts
Что такое КБ и вопрос интеграции

Автор MaRt

Ответов: 1
Просмотров: 2204
Последний ответ 05.10.2010, 14:52:16
от ankoch
При ответе на вопрос (при регистрации) появляются доп. пункты анкеты

Автор serv-is

Ответов: 1
Просмотров: 2244
Последний ответ 21.07.2010, 13:03:19
от serv-is