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

pantela

  • Захожу иногда
  • 257
  • 1 / 0
Проверка с поля к полю
« : 17.08.2010, 10:36:56 »
Есть 1 полей:
photo1
photo2
photo3
photo4
photo5

Вних находятся ссылка изображения, т.е. если в поле прописанно что нибудь значит изображение есть, если оно пустое значит нету.

Далее есть код который выводит изображение photo1, если изображения нету в photo1, тогда выводится изображение no_photo.gif
Код
<?php if (!empty($ad->photo1) && file_exists(AS_ADS_IMG_PATH.$ad->photo1)) : ?>
<img src="<?php echo AS_ADS_IMG_URL.$ad->photo1; ?>" width="112" height="84" alt="photo_1" /><br />
<?php else : ?>
<img src="<?php echo AS_ADS_OTHIMG_URL.'no_photo.gif'; ?>" width="112" height="84" alt="" /><br />
<?php endif; ?>

Момент токой что нубные пользователи иногда добавляя изображение, пропускай поле photo1, вот и при выводе объявления тогда появляется изображение no_photo.gif.

Одним словом мне надо реализовать токой код, что если поле photo_1 пустой, тогда перейти photo_2, если  оно пустое тогда photo_3 и.т.д. до photo_5, в итоге если и оно пустое тогда выводим изображение no_photo.gif


Решение нашол, вот только может есть более профессиональное.  ^-^

Код
<?php 
if (!empty($ad->photo1)){$AS_ADS_IMG_URL="$ad->photo1";}
if (empty($ad->photo1)){$AS_ADS_IMG_URL="$ad->photo2";}
if (empty($ad->photo2)){$AS_ADS_IMG_URL="$ad->photo3";}
if (empty($ad->photo3)){$AS_ADS_IMG_URL="$ad->photo4";}
if (empty($ad->photo4)){$AS_ADS_IMG_URL="$ad->photo5";}
if (empty($ad->photo5)){$AS_ADS_IMG_URL="$ad->photo6";}
if (empty($ad->photo1) && empty($ad->photo2) && empty($ad->photo3) && empty($ad->photo4) && empty($ad->photo5) && empty($ad->photo6)) {$AS_ADS_IMG_URL="../no_photo.gif";}
?>

спс.Ув.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Проверка с поля к полю
« Ответ #1 : 17.08.2010, 10:51:36 »
Не уверен что сработает, ща проверю
$AS_ADS_IMG_URL = $ad->photo1 || $ad->photo2 || $ad->photo3 || $ad->photo4 || $ad->photo5 || "../no_photo.gif";
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

pantela

  • Захожу иногда
  • 257
  • 1 / 0
Re: Проверка с поля к полю
« Ответ #2 : 17.08.2010, 11:10:52 »
Не прошло...
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Проверка с поля к полю
« Ответ #3 : 17.08.2010, 13:34:53 »
Не совсем гламурно, но яб сделал наверное так:

Код: php
$AS_ADS_IMG_URL = $ad->photo1 ? $ad->photo1
                : $ad->photo2 ? $ad->photo2
                : $ad->photo3 ? $ad->photo3
                : $ad->photo4 ? $ad->photo4
                : $ad->photo5 ? $ad->photo5
                : $ad->photo6 ? $ad->photo6
                : '../no_photo.gif'
                ;

Или может через цикл...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

pantela

  • Захожу иногда
  • 257
  • 1 / 0
Re: Проверка с поля к полю
« Ответ #4 : 17.08.2010, 13:51:53 »
спс. Мне просто самый хороший вариант ))

по твоему коду выводится сразу photo6
*

pantela

  • Захожу иногда
  • 257
  • 1 / 0
Re: Проверка с поля к полю
« Ответ #5 : 17.08.2010, 14:11:33 »
Вод подсказали код, но он лучще ли чем мой что в первом посту ? ))

Код
if (!empty($ad->photo1)) {
   $AS_ADS_IMG_URL="$ad->photo1";
}
else {
   for ($i = 1; $i <=5; $i++) {
      if (empty($ad->photo.$i)) {
         $AS_ADS_IMG_URL="$ad->photo".$i;
      }
      else {
         $exist = true;
         break;
      }
   }
}
if ($exist) {
   $AS_ADS_IMG_URL="../no_photo.gif";
}
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Проверка с поля к полю
« Ответ #6 : 17.08.2010, 15:28:13 »
Ну про цикл я упоминал)
Думаю можно сократить до:

for ($i = 1; $i <= 5; $i ++) {
      if (!empty($ad->photo.$i)) {
         $AS_ADS_IMG_URL = "$ad->photo".$i;
      } else {
         break;
      }
}

if (empty($AS_ADS_IMG_URL) {
      $AS_ADS_IMG_URL = "../no_photo.gif";
}

тем более что там ошибка (if empty)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вставка поля в форму добавления материала

Автор __noob__

Ответов: 86
Просмотров: 6462
Последний ответ 17.06.2014, 15:07:19
от __noob__
Joomla 2.5: заполнение поля формы по параметру URL

Автор Kanarik

Ответов: 2
Просмотров: 1416
Последний ответ 07.05.2014, 11:17:47
от Kanarik
Текстовые поля в админке модуля

Автор maxsl_89

Ответов: 6
Просмотров: 1401
Последний ответ 04.11.2013, 16:25:04
от Aleks.Denezh
Фильтр по заголовку(полю) в своем компоненте

Автор gdm-it

Ответов: 1
Просмотров: 1683
Последний ответ 26.10.2011, 01:07:03
от smart