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

Sulpher

  • Живу я здесь
  • 2136
  • 402 / 16
  • Шаблоны и расширения Joomla
Считаю необходимым внедрение в Virtuemart 1.0.15 (ВМРЕ) механизм защиты от автоматической регистрации спам-ботами Captcha (KCAPTCHA).

Вот рецепт:
1. Скачиваем lite версию KCAPTCHA (48кб). Распаковываем содержимое в корень сайта.

2. Открываем файл /languages/russian.php и добавляем следующую строку в конце файле перед закрывающей скобкой:

Код
var $_PHPSHOP_SHOPPER_FORM_CAPTCHA = 'Введите код с картинки:';

Далее, открываем файл administrator/components/com_virtuemart/html/checkout_register_form.php и после строк 85-88
Код: php
if( $VM_LANG->$property != "" ) {
$shopper_fields['extra_field_'.$i] = $VM_LANG->$property;
}
}

добавляем следующий фрагмент кода:
Код: php
// Begin Captcha Hack - thomas_freeman www.KustomServices.com //
// Verfiy this is a real person?
$shopper_fields['captcha'] = $VM_LANG->_PHPSHOP_SHOPPER_FORM_CAPTCHA;
// End Captcha Hack //

В этом же файле после строк 203-205:
Код: php
    case 'extra_field_4': case 'extra_field_5':
    eval( "\$ps_html->list_$fieldname( mosGetParam( \$_REQUEST, '$fieldname'), \"id=\\\"$fieldname\\\"\");" );
    break;
добавляем такой код:
Код: php
// Begin Captcha Hack - thomas_freeman www.KustomServices.com //
case 'captcha':
echo '<div>';
echo '<img src="/kcaptcha/index.php?' . session_name("virtuemart") . '=' . session_id() . '" alt="Turn on pictures showing" /></div>';
echo '<div><input type="text" id="'.$fieldname.'_field" name="captcha" size="30" class="inputbox" />'."\n";
echo '</div>';
break;
// End Captcha Hack // 

Открываем файл administrator/components/com_virtuemart/classes/ps.shopper.php и после строк 47-48:
Код: php
if (empty($d['email'])) { $provided_required = false; $missing .= "email,"; }
}

добавляем такой фрагмент:
Код: php
// Begin Captcha Hack - thomas_freeman www.KustomServices.com //
$captcha_string=$_POST['captcha'];
if(!isset($_SESSION['captcha_keystring'])||$_SESSION['captcha_keystring']!==$captcha_string)
{
$provided_required = false;
$missing .= "verification_code,";
unset($_SESSION['captcha_keystring']);
}
// END Captcha PATCH


Источник: http://forum.virtuemart.net/index.php?topic=29928
По материалам: http://joomup.com/blog/2007/07/04/captcha-backend-login-form/
(Авторы: thomas_freeman, Physicist)
*

PaLyCH

  • Давно я тут
  • 956
  • 146 / 19
  • Менеджер проектов

Хм... Ввод любого кода приводит к прохождению регистрации... Это только у меня? Или у всех так?
*

Exciter

  • Захожу иногда
  • 155
  • 9 / 0
  • Теория + практика
А как тоже самое сделать в 1.1.3 ?
*

mich

  • Осваиваюсь на форуме
  • 10
  • 1 / 0
Вот поставил все по инструкции , а при регистрации и заполнении всех полей выводит , что проверьте мол все ли заполнили?...версия VM1.0.12.

Цитировать
Вот поставил все по инструкции , а при регистрации и заполнении всех полей выводит , что проверьте мол все ли заполнили?...версия VM1.0.12.
проблема решается заменой в index.php (в каталоге kcaptcha) кода на следующий
Код
<?php

error_reporting (E_ALL);

/* Using:

<?php
session_start();
?>
<form action="./" method="post">
<p>Enter text shown below:</p>
<p><img src="PATH-TO-THIS-SCRIPT?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<p><input type="text" name="keystring"></p>
<p><input type="submit" value="Check"></p>
</form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] ==  $_POST['keystring']){
echo "Correct";
}else{
echo "Wrong";
}
}
unset($_SESSION['captcha_keystring']);
?>

*/

include('kcaptcha.php');

//if(isset($_REQUEST[session_name()])){
// session_start();
//}

$captcha_obj = new KCAPTCHA();

//if($_REQUEST[session_name()]){
session_name('virtuemart');
session_start();
$_SESSION['captcha_keystring'] = $captcha_obj->getKeyString();
//}

?>
все дело в session_name('virtuemart'); ^-^
« Последнее редактирование: 03.04.2009, 11:06:51 от Felix.u »
*

shipa

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Как сделать это в Joomla 1.5?
*

Nira_S

  • Осваиваюсь на форуме
  • 20
  • 4 / 0
*

rapira

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
« Последнее редактирование: 08.04.2010, 18:38:45 от rapira »
*

gogison

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
  • Регистрации в каталогах, форумах, досках, новостях

Вот рецепт:
1. Скачиваем lite версию KCAPTCHA (48кб). Распаковываем содержимое в корень сайта.


Люди не делайте этого - сайт перестает работать!
*

back

  • Захожу иногда
  • 214
  • 7 / 0
  • Все просто если по очереди)
А как на счет версий магазина по старше?
*

antp

  • Новичок
  • 4
  • 0 / 0
А как на счет версий магазина по старше?
У меня VirtueMart 1.1.7 stable на Joomla 1.5.22 Stable, долго не думая, скачал osolCaptcha установил, в настройках плагина: "галачку" на включить, Auto add in (joomla default)Registration - да, остальное по-вкусу, дальше сохраняем и проверяем стандартную регистрацию Joomla, должна появится CAPTCHA..

Чтобы появилась CAPTCHA в регистрационной форме VirtueMart, редактируем: administrator\components\com_virtuemart\html\checkout_register_form.php

Ищем
Код: php
echo '
<input type="submit" value="'. $VM_LANG->_('BUTTON_SEND_REG'). '" class="button" onclick="return( submitregistration());" />

и выше него вставляем
Код: php
global $mainframe;
$mainframe->triggerEvent('onShowOSOLCaptcha', array(false));

Сохраняем, и проверяем... у меня заработало с первого раза..
*

hawkmax

  • Новичок
  • 7
  • 2 / 0
Сделал капчу OSOLCaptcha, работает на ура. Через страницу зайти невозможно без CAPTCHA. Но вот проблема, спамеры до сих пор ломятся как будто ее нет. Походу действуют через post запросы.
Нашел на форуме решение проблемы для обычной регистрации joomla
http://joomlaforum.ru/index.php/topic,76386.msg820353.html#msg820353
Можно его как нить привязать для виртулмарта?
*

kottom

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
а как поставить капчу в раздел "отправить вопрос по товару" 
*

coolon

  • Захожу иногда
  • 59
  • 0 / 0
EasyCalcCheck PLUS, OSOLCaptcha как то не интересно, зелёная она какае то, подскажите другие варианты?
« Последнее редактирование: 27.12.2011, 04:30:26 от coolon »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart - SMS уведомления о сделаном заказе.

Автор bork

Ответов: 42
Просмотров: 23504
Последний ответ 26.07.2021, 22:11:25
от Oleg91
Отчеты и статистика для VirtueMart

Автор 4kict

Ответов: 25
Просмотров: 10486
Последний ответ 14.01.2021, 00:09:53
от gartes
IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

Ответов: 105
Просмотров: 54353
Последний ответ 05.02.2017, 11:44:02
от Super_Panda
Модуль недавно просмотренные товары для VirtueMart 1.1.X

Автор aleks_yug

Ответов: 97
Просмотров: 28516
Последний ответ 25.10.2016, 15:03:07
от Igoritaly
Хаки для убыстрения VirtueMart (уменьшение запросов и т.п.)

Автор yadrinez

Ответов: 197
Просмотров: 82094
Последний ответ 05.02.2016, 21:53:34
от flyingspook