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

Nikituki

  • Новичок
  • 7
  • 0 / 0
Разрабатываю портал со структурой:
главный сайт на Joomla на домене второго уровня и несколько сайтов на самописной cms на доменах третьего уровня.

Необходимо, чтобы юзер под одним логином мог бы ходить по всем этим сайтам, не авторизируясь заново на каждом. Дабы не влазить в Joomla решил использовать ее базу пользователей.
Но возник вопрос:
Как мне в ручную реализовать авторизацию пользователя в Joomla с другого сайта и как узнать, что пользователь уже авторизовался (т.е. какие куки выдаются при авторизации, как хранятся сессии и т.п.)?

Надеюсь, что понятно описал суть проблемы.
*

jem777

  • Завсегдатай
  • 1666
  • 119 / 2
*

Nikituki

  • Новичок
  • 7
  • 0 / 0
А если OpenID?
С Joomla вроде тоже дружит?
Не хотелось бы его использовать.

Да и, если юзер авторизуется допустим на одном из доменов 3 уровня и перейдет на другой, то ему же там заново придется авторизовываться?

Как я себе представляю эту систему:

Пользователь вводит свои данные на одном из сайтов. Движок обращается к базе Joomla, проверяет логин/пасс, если все правильно, то выдает такие же куки, какие выдала бы Joomla и запустил бы ее сессию. Вот хотелось бы узнать, какие Joomla выдает куки и как работает с сессиями?
*

jem777

  • Завсегдатай
  • 1666
  • 119 / 2
Да в принципе фиг с ней, с авторизацией. Тут вам надо продумать единую регистрацию. Как вы это хотите реализовать? Он зашел на сайт третьего уровня и зарегистрировался? А как главный сайт узнает об этом? Одна база данных на все сайты или одна таблица юзеров на все сайты? Как синхронизацию юзеров планируете сделать?
*

dynamit

  • Завсегдатай
  • 1744
  • 265 / 0
  • Winter Is Coming
ТАМ ГДЕ ТЫ НИЧЕГО НЕ МОЖЕШЬ, ТЫ НЕ ДОЛЖЕН НИЧЕГО ХОТЕТЬ
==========================================================
Сайты на Joomla!. Верстка. Консультации.  ||  Яндекс уже не ищет, он уже продает (с)  ||    Создание шаблона для Joomla 2.5
*

Nikituki

  • Новичок
  • 7
  • 0 / 0
Да в принципе фиг с ней, с авторизацией. Тут вам надо продумать единую регистрацию. Как вы это хотите реализовать? Он зашел на сайт третьего уровня и зарегистрировался? А как главный сайт узнает об этом? Одна база данных на все сайты или одна таблица юзеров на все сайты? Как синхронизацию юзеров планируете сделать?
Все сайты будут использовать таблицу юзеров Joomla, при регистрации будет либо редирект на регу Joomla, либо рега на сайте будет просто дописывать нового юзера в базу Joomla, не вижу в этом особой сложности. А вот с авторизацией не "фиг")
*

Nikituki

  • Новичок
  • 7
  • 0 / 0
Множество сайтов Joomla с общей базой пользователей - может пригодится.
Проблема в том, чтобы научить cms на субдомменах авторизовывать как Joomla.
*

jem777

  • Завсегдатай
  • 1666
  • 119 / 2
Ну тогда смотрите как Joomla авторизует юзеров и где хранит сессии (обычно в базе данных) - и от этого отталкиваться.
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Ставить куку сразу для всех сайтов при логине на одном, в этом случае проще дописывать самописное, чем хакать джумла, правда все же придется джумла хакать, чтобы тоже куку ставила на все сайты на самописках.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

Nikituki

  • Новичок
  • 7
  • 0 / 0
Ну тогда смотрите как Joomla авторизует юзеров и где хранит сессии (обычно в базе данных) - и от этого отталкиваться.
Собственно и был вопрос как она это делает)
Ставить куку сразу для всех сайтов при логине на одном, в этом случае проще дописывать самописное, чем хакать Joomla, правда все же придется Joomla хакать, чтобы тоже куку ставила на все сайты на самописках.
Я как раз и пытаюсь найти вариант реализации с наименьшем вмешательством в код Joomla.
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Nikituki

  • Новичок
  • 7
  • 0 / 0
http://api.joomla.org/Joomla-Framework/Session/JSession.html
Врятли я смогу использовать объекты Joomla на другом движке.

Посмотрел, что Joomla генерит рандомное имя куки, в которой хранится ид сессии...
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Собственно и был вопрос как она это делает
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Nikituki

  • Новичок
  • 7
  • 0 / 0
Решил, что проще всего при логине на одном сайте, отправлять введенные данные всем остальным, авторизуя таким образом везде.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 1.5 как убрать кнопку редактировать материант с сайта

Автор andriy465

Ответов: 5
Просмотров: 4021
Последний ответ 12.11.2023, 23:37:03
от all_zer
Нужно wiki под Joomla

Автор THE KILLERS

Ответов: 9
Просмотров: 9692
Последний ответ 05.11.2020, 20:56:47
от Kijv
Поиск статьи по url сайта в админке Joomla 1.5

Автор Tema

Ответов: 5
Просмотров: 2194
Последний ответ 14.08.2020, 07:16:44
от rsn
Не могу войти в админку Joomla 1.5

Автор MrSkif

Ответов: 14
Просмотров: 10559
Последний ответ 12.09.2018, 19:36:32
от PaLyCH
Не войду в админку Joomla 1.5.26, пишет соединение с сервером было сброшено

Автор rom_4

Ответов: 4
Просмотров: 5512
Последний ответ 16.05.2018, 17:28:18
от Алексей MeRsOvOd