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

mozhunt

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Invalid Token - как обойти?
« : 04.05.2011, 22:17:20 »
Народ, пишу программу для автоматического входа в админку Joomla.
методом POST передаю

username=admin
passwd=123
lang=
option=com_login
task=login
704ba13a8a4ca611dd86f824c96e8ba8=1        - Нужно еще передать его, но это непонятно откуда берется.

Кто-нибудь может подсказать, как Token этот найти и передать?
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Invalid Token - как обойти?
« Ответ #1 : 04.05.2011, 23:04:13 »
Народ, пишу программу для автоматического входа в админку Joomla.
методом POST передаю

username=admin
passwd=123
lang=
option=com_login
task=login
704ba13a8a4ca611dd86f824c96e8ba8=1        - Нужно еще передать его, но это непонятно откуда берется.

Кто-нибудь может подсказать, как Token этот найти и передать?

ЫЫЫ, брутфорс паролей? =)
По теме - не владею информацией.
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Invalid Token - как обойти?
« Ответ #2 : 05.05.2011, 01:24:57 »
Нужно еще передать его, но это непонятно откуда берется.
это сессия, грубо говоря.
берется отсюда
Цитировать
<?php echo JHTML::_( 'form.token' ); ?>
проверяется что бы не передавали просто так данные.
*

mozhunt

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Re: Invalid Token - как обойти?
« Ответ #3 : 05.05.2011, 10:03:57 »
да я понимаю, что это такое.
с помощью GET я его получаю, затем пытаюсь передать с помощью POST и ошибка - Invalid Token ..
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Invalid Token - как обойти?
« Ответ #4 : 05.05.2011, 10:08:08 »
да я понимаю, что это такое.
с помощью GET я его получаю, затем пытаюсь передать с помощью POST и ошибка - Invalid Token ..
что получаю? как получаю? куда передаю? и что вообще нужно?
телепаты в отпуске.
*

mozhunt

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Re: Invalid Token - как обойти?
« Ответ #5 : 05.05.2011, 11:25:17 »
у меня вот такой код на дельфи:

procedure TForm1.Button1Click(Sender: TObject);
var params,responseres,first:tstringlist;
Find,str:string;  
i:integer;  
begin
IdCookieManager1.CookieCollection.Clear;
params:=TStringList.Create;
responseres:=TStringList.Create;
first:=TStringList.Create;
try
first.Text:=IdHTTP1.Get('http://site.ru/administrator/index.php');
Memo1.Text:=first.Text;


find:='value="1"';  
For i:=0 to Memo1.Lines.Count-1 do // Запускаем цикл поиска строки
If Pos(FIND, Memo1.Lines.Text)<>0
Then

str:=copy(memo1.lines.Text,pos(FIND,Memo1.Lines.Text)-34,32);   // получили token



params.Add('username='+'test');
params.Add('passwd='+'test');
params.Add('lang='+'');
params.Add('option='+'com_login');
params.Add('view='+'login');
params.Add(str+'=1');     // передаем токен

responseres.Text:=IdHTTP1.Post('http://site.ru/administrator/index.php',params);
//IdHTTP1.HandleRedirects:=true;
Memo2.Text:=responseres.Text;
if Pos('logout',responseres.Text)>0 then
     begin
      ShowMessage('Окейно');
      end
  else
   ShowMessage('Error!');
finally
params.free;
responseres.free;
first.free;
end;
end;
*

mozhunt

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Re: Invalid Token - как обойти?
« Ответ #6 : 05.05.2011, 13:31:52 »
проблема решена
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Invalid Token - как обойти?
« Ответ #7 : 05.05.2011, 20:34:36 »
проблема решена
А как она решена?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Проблема с авторизацией Invalid Token

Автор treX

Ответов: 100
Просмотров: 97151
Последний ответ 06.10.2019, 16:55:45
от PaLyCH
Переход на PHP 7, не пускает в админку Invalid Token

Автор murzuk

Ответов: 37
Просмотров: 5251
Последний ответ 07.04.2018, 05:52:09
от capricorn
Invalid Token при авторизации

Автор 4yBaK

Ответов: 5
Просмотров: 3664
Последний ответ 04.12.2011, 20:55:18
от liskar
Ошибка Warning: Invalid argument supplied for foreach

Автор rossoman

Ответов: 2
Просмотров: 2521
Последний ответ 18.11.2011, 14:28:56
от corvuscorax84
Invalid Token

Автор AlexBel

Ответов: 3
Просмотров: 2048
Последний ответ 01.11.2011, 16:15:03
от AlexBel