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

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Было:
Код
<p class="ja-day">
 <?php
echo "<span class=\"day\">".date ('D').",</span>";
echo "<span class=\"date\">".date ('d')."</span>";
echo "<span class=\"month\">".date ('M')."</span>";
echo "<span class=\"year\">".date ('Y')."</span>";
 ?>
</p>

Сам написал, хоть и полный 0 в PHP  ::)
Код
<p class="ja-day">
<?php
setlocale(LC_TIME, "uk_UA.UTF8");
echo strftime(" %a ");
echo strftime("%d ");
echo strftime("%b ");
echo strftime("%Y");
?>
</p>

Неполучается придать стиль (Например "<span class=\"day\">"). незнаю как правильно написать...  Пробовал методом научного тыка - лезет ошибка в той строке...
PHP 5.3.6

Да, видел пару тем с возможным решением И снова вывод даты
Код
echo JHTML::_('date', date('Y-m-d'), JText::_('DATE_FORMAT_LC3'));

Вот а как сюда прикрутить вывод дня недели (Например: Суб) и еще + это все на украинском (ну если это есть в переводе то должно быть просто)
Спойлер
[свернуть]
Но как стили прикрутить отдельно к дню недели, отдельно к месяцу... ?
« Последнее редактирование: 12.06.2011, 15:29:53 от Mihanja80 »
Я с мобильного, в основном...
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Re: Стиль вывода даты на родном языке
« Ответ #1 : 05.06.2011, 00:46:32 »
РЕШЕНО Украинский:
Код
<p class="ja-day">
<?php
setlocale(LC_TIME, "uk_UA.UTF8");
echo "<span class=\"day\">".strftime("%a").",</span>";
echo "<span class=\"date\">".strftime("%d")."</span>";
echo "<span class=\"month\">".strftime("%b")."</span>";
echo "<span class=\"year\">".strftime("%Y")."</span>";
?>
</p>
Получим: Сбт,04Чер2011

РЕШЕНО Русский:
Код
<p class="ja-day">
<?php
setlocale(LC_TIME, "ru_RU.UTF8");
echo "<span class=\"day\">".strftime("%a").",</span>";
echo "<span class=\"date\">".strftime("%d")."</span>";
echo "<span class=\"month\">".strftime("%b")."</span>";
echo "<span class=\"year\">".strftime("%Y")."</span>";
?>
</p>
Получим: Сбт,04Июн2011
 *DRINK* Метод научного тыка победил  *DRINK*
(а не хватало-то всего две точки)

Источник: http://ua2.php.net/manual/ru/function.strftime.php

Если в чем ошибся - поправьте. Код работает 100% ;) и не нужно писать кучу кода :)
« Последнее редактирование: 05.06.2011, 00:54:14 от Mihanja80 »
Я с мобильного, в основном...
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Продолжу...
 
Код
echo "<span class=\"day\">".date ('H').",</span>";
setlocale(LC_TIME, "uk_UA.UTF8");
echo "<span class=\"day\">".strftime("%H %a").",</span>";
И обе функции выводят время на три часа меньше (VPS в германии, я в Украине)



Куда еще копать? Что покрутить чтобы выровнять время?
Я с мобильного, в основном...
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Код: php
echo '<span style="color:red;">'.JHTML::_('date', 'now', JText::_('l, ')).'</span>'.
'<span style="color:blue;">'.JHTML::_('date', 'now', JText::_('d ')).'</span>'.
'<span style="color:green;">'.JHTML::_('date', 'now', JText::_('F ')).'</span>'.
'<span style="color:crimson;">'.JHTML::_('date', 'now', JText::_('Y')).'</span>'.
'<span style="color:silver;">'.JHTML::_('date', 'now', JText::_(' H:i')).'</span>';
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Код
echo '<span class=\"day\">'.JHTML::_('date', 'now', JText::_('l, ')).'</span>'.
'<span class=\"date\">'.JHTML::_('date', 'now', JText::_('d ')).'</span>'.
'<span class=\"month\"">'.JHTML::_('date', 'now', JText::_('F ')).'</span>'.
'<span class=\"year\">'.JHTML::_('date', 'now', JText::_('Y')).'</span>';


=  Понеділок, 06 червня 2011


Lex, Огромное спасибо за корректное решение вопроса.   *DRINK*
Данный вариант будет работать и на многоязычных сайтах ;) + реагирует на настройку часового пояса в админке Joomla

Но вопрос, почему же с сервера не корректно тянулся часовой пояс не дает покоя...
Я с мобильного, в основном...
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
зачем через JText формат то пропускать? :)
*

Lex

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

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Так, а как правильно?  :o


Так?
Код
<?php
echo '<span class=\"day\">'.JHTML::_('date', 'now', ('l, ')).'</span>'.
'<span class=\"date\">'.JHTML::_('date', 'now', ('d ')).'</span>'.
'<span class=\"month\"">'.JHTML::_('date', 'now', ('F ')).'</span>'.
'<span class=\"year\">'.JHTML::_('date', 'now', ('Y')).'</span>';
?>

Или так?
Код
<?php
echo '<span class=\"day\">'.JHTML::_('date', 'now', JText::_('l, ')).'</span>'.
'<span class=\"date\">'.JHTML::_('date', 'now', ('d ')).'</span>'.
'<span class=\"month\"">'.JHTML::_('date', 'now', ('F ')).'</span>'.
'<span class=\"year\">'.JHTML::_('date', 'now', ('Y')).'</span>';
?>

Работают оба варианта...
« Последнее редактирование: 06.06.2011, 22:32:55 от Mihanja80 »
Я с мобильного, в основном...
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Да хюз. J1.6 никто и не проверял очень то. Я бы все же на словах перевод оставил. А цифры они и в Африке цифры.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Значит остановимся на таком варианте:
Код: php
<p class="ja-day">
<?php
echo date ('H:m:s',time ());
echo '<span class=\"day\">'.JHTML::_('date', 'now', JText::_('l, ')).'</span>'.
'<span class=\"date\">'.JHTML::_('date', 'now', ('d ')).'</span>'.
'<span class=\"month\"">'.JHTML::_('date', 'now', JText::_('F ')).'</span>'.
'<span class=\"year\">'.JHTML::_('date', 'now', ('Y')).'</span>';
?>
</p>
yes!
Я с мобильного, в основном...
*

Lex

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

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
JHTML::_('date', 'now', 'Y');
кавычки там не нужны и Jtext тоже.
там задается формат даты. Форматы описаны здесь - http://php.net/manual/en/function.date.php
а так по идее оно и так должно переводиться на нужный язык.
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
JHTML::_('date', 'now', 'Y');
кавычки там не нужны и Jtext тоже.
там задается формат даты. Форматы описаны здесь - http://php.net/manual/en/function.date.php
а так по идее оно и так должно переводиться на нужный язык.

 :o

Код: php
echo '<span class=\"day\">'.JHTML::_(date, now,('l, ')).'</span>'.

?  :'(

(Экранирование двойных кавычек пусть так и будет?)
Я с мобильного, в основном...
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Ребята, можно получить заключение по теме?
Код
echo '<span class=\"day\">'.JHTML::_(date, now,('l, ')).'</span>'.
Так правильно? ::)
Я с мобильного, в основном...
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
echo '<span class=\"day\">'.JHTML::_(date, now, 'l, ').'</span>'.
Скобки не нужны они от JText остались.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Я с мобильного, в основном...
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Включил отображение ошибок на максимум (PHP5.3.6):




 :dry:

« Последнее редактирование: 12.06.2011, 15:34:18 от Mihanja80 »
Я с мобильного, в основном...
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
JHTML::_('date', 'now', 'Y');
кавычки там не нужны и Jtext тоже.
там задается формат даты. Форматы описаны здесь - http://php.net/manual/en/function.date.php
а так по идее оно и так должно переводиться на нужный язык.
Вернул кавычки и ошибка пропала :)

Окончательний вариант:
Код: php
<p class="ja-day">
      <?php
echo '<span class=\"day\">'.JHTML::_('date', 'now', 'l, ').'</span>'.
'<span class=\"date\">'.JHTML::_('date', 'now', 'd ').'</span>'.
'<span class=\"month\"">'.JHTML::_('date', 'now', 'F ').'</span>'.
'<span class=\"year\">'.JHTML::_('date', 'now', 'Y').'</span>';
      ?>
    </p>
Я с мобильного, в основном...
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Обновление!   ::)
Валидатор ругался...

Код: php
<p class="ja-day">
<span class="day"> <?php echo JHTML::_('date', 'now', 'l,'); ?></span>
<span class="date"> <?php echo JHTML::_('date', 'now', 'd'); ?></span>
<span class="month"> <?php echo JHTML::_('date', 'now', 'F'); ?></span>
<span class="year"> <?php echo JHTML::_('date', 'now', 'Y'); ?></span>
</p>

Спасибо Lex за помощь  :D
Я с мобильного, в основном...
*

alsak

  • Захожу иногда
  • 100
  • 2 / 0
В способе предложенном Mihanja80 названия месяца, если оно состоит из 6 и более букв налазит на год. Как можно увеличить размер ячейки для месяца?
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Прописать стили (отступ слева/справа) для классов, делов-то на пару минут...
Я с мобильного, в основном...
*

jullia.shipitcina

  • Новичок
  • 1
  • 0 / 0
setlocale(LC_ALL, "ru_RU.UTF8");
$dateView = strftime("%d %B %Y", $timestamp);

Поставила в setlocale "ru_RU.UTF8". Дата стала выводиться на русском. А как теперь сделать, чтобы месяца выводились в падеже? Июня, Июля и т.д.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться