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

NikolayV

  • Новичок
  • 9
  • 1 / 0
Maximum execution time of 30 seconds exceeded in Z:\home\...........

Поиском пользуюсь!

Преамбула:
В первый раз в жизни занялся сайтостроением. Нужда заставила, мне нужен сайт с моим резюме, заказать не могу, не располагаю средствами. Joomla показалась наиболее оптимальным вариантом. Не знаю практически ничего, только немного английского. Установил Денвер на "свисток", заработало, установил Joomla 1.6.1., установилась, локализую, файлы локализации делил на админку и сайт, сайт встал нормально (разархивировал и устанавливал по рецепту  -
У меня локализация из полного пакета не устанавливалась. я сделал так:.....site.zip....... "Ваш путь\tmp\1" ......admin.zip........."Ваш путь\tmp\2"
время сократилось и пакет для сайта установился, выставлен язык для сайта в админке, проверил дефолтный язык сайта, вроде русский есть. Когда устанавливал локализацию сайта "успеха" в админке не было, просто белая страница, перезашёл и увидел новую строчку в лэнгвидж менеджере -
Цитировать
2              Russian       Site       Default       1.6.1       2011-03-08       Russian Translation Team       smart@joomlaportal.ru
Установил локализацию визуального редактора, мне даже в админке написали, что "успех" ))))

основная часть:
Да, я прочитал тему в разделе Joomla 1.0: Ошибки - Как исправить ошибку "Maximum execution time of 30 seconds exceeded"
мною выполнено в текстовом редакторе изменение файла index.php расположенного в корневом каталоге

вот транскрипция написания (возможно тут что то не так):
Цитировать
<?php ini_set("max_execution_time", "60"); ?>**
 * @version        $Id: index.php 20806 2011-02-21 19:44:59Z dextercowley $
 * @package        Joomla.Site
 * @copyright    Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
 * @license        GNU General Public License version 2 or later; see LICENSE.txt
 */

// Set flag that this is a parent file.
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);

if (file_exists(dirname(__FILE__). '/defines.php')) {
    include_once dirname(__FILE__). '/defines.php';
}

if (!defined('_JDEFINES')) {
    define('JPATH_BASE', dirname(__FILE__));
    require_once JPATH_BASE.'/includes/defines.php';
}

require_once JPATH_BASE.'/includes/framework.php';

// Mark afterLoad in the profiler.
JDEBUG ? $_PROFILER->mark('afterLoad') : null;

// Instantiate the application.
$app = JFactory::getApplication('site');

// Initialise the application.
$app->initialise();
 итак далее........
Всё равно фатал еррор 30 секунд
Мною создан Текстовый документ (.txt)  htaccess
с текстом
Цитировать
php_value max_execution_time 60
(только с этим текстом)


Всё тщетно.
Тема уже повторялась. Но всё равно прошу объяснить на пальцах, что у меня не так! Если смущает моя не компетентность, тему можно будет удалить (если мне что нибудь или кто нибудь поможет).

ЗЫ: С огромным уважением к администрации данного проекта!
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
причем здесь htaccess и index.php?
Эти настройки будут действовать если разрешает хостинг (в большинстве случаев такого нет)
Если хостинг дрянь, то с этим ничего не сделаешь.
Если это на локалке происходит, то увеличивайте в php.ini.
*

NikolayV

  • Новичок
  • 9
  • 1 / 0
А вот причём:
http://joomlaforum.ru/index.php/topic,36283.0.html

Цитировать
Данная ошибка проявляется если скрипт выполняется больше, чем ему разрешено в конфигурации PHP. Например вы устанавливаете какой-то довольно большой компонент или производите импорт данных. В конфигурации PHP по умолчанию максимальное время выполнения для скриптов задается в районе 20-30 секунд. На разных хостингах это значение может отличаться.

Т.е. считается, что за это время любой скрипт успеет отработать и вернуть результат браузеру, но периодически этого времени не хватает. В этом случае нужно либо самому изменить этот параметр, увеличив время, либо обратиться к хостеру.


Если у вас возникает такая проблема, то можно сделать следующее:

1. Попробовать самостоятельно изменить это значение, добавив в самое начала index.php (рассположенного в корне сайта) следующие строчки:

<?php ini_set("max_execution_time", "60"); ?>

или

<?php set_time_limit (60); ?>

или же положив в корень сайта файл .htaccess следующего содержания:

Код:

   php_value max_execution_time 60


Если же такой файл уже есть в корне сайта — просто добавьте в него приведенную выше строку.

У меня корень сайта Z:\home\mysite\www
Я Joomla установил дома на компьютере на флешке - "на свистке" ))) тренируюсь ))))

Извините ради бога, а это где?
Цитировать
Если это на локалке происходит, то увеличивайте в php.ini.
и что нужно изменить?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Я Joomla установил дома на компьютере на флешке - "на свистке" ))) тренируюсь ))))
на дискету ее еще поставьте, а потом удивляйтесь почему так происходит.
*

NikolayV

  • Новичок
  • 9
  • 1 / 0
Простите, но не понимаю Вашей иронии.
Я прошу помощи и разъяснения, я не знаю где мне изменять 30 сек лимит на скрипт и какова правильная транскрипция написания и в каком файле и если это не те файлы о которых я говорил в первом посте, то какие?
Заранее благодарен!
*

_ib_

  • Давно я тут
  • 673
  • 100 / 8
Вам уже ответили:
Если это на локалке происходит, то увеличивайте в php.ini.

Maximum execution time of 30 seconds exceeded in Z:\home\...........
Поиском пользуюсь!

+ плохо ищем. Гугл: "Maximum execution time +php.ini"
Легальные шаблоны и дёшево!  + скидки до 50% для шаблонов клуба Joomlart, RocketTheme, Yootheme и Gavick.

при интересе пишите в личку или на мыло: "p" точка "d" собака gmx.de
*

NikolayV

  • Новичок
  • 9
  • 1 / 0
Единственный ini нашёл в установленном Денвере
Путь:
Z:\usr\local\php5
Изменение строки
Цитировать
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 60     ; Maximum execution time of each script, in seconds
max_input_time = 60   ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M      ; Maximum amount of memory a script may consume (128MB)

Всё равно при установке
Цитировать
Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\mysite\www\libraries\joomla\filesystem\folder.php on line 557
Я не плохо ищу, я не понимаю. Простите.
*

NikolayV

  • Новичок
  • 9
  • 1 / 0
Благодарю Вас!

Всё получилось!

При любом изменении в конфигурационных файлах нужно перезагружать денвер!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблемы с входом на сайт

Автор belovpaha

Ответов: 7
Просмотров: 4707
Последний ответ 20.09.2022, 14:30:51
от sivers
Проблемы с правами на запись папок "logs и tmp"

Автор murich

Ответов: 42
Просмотров: 28761
Последний ответ 07.10.2021, 18:29:16
от Maxandrey
Undefined variable, прошу помощи, важный проект!

Автор Elimelech

Ответов: 15
Просмотров: 1592
Последний ответ 22.12.2016, 12:42:23
от Elimelech
Прошу помощи у знающих людей

Автор Garter4ik

Ответов: 3
Просмотров: 1407
Последний ответ 09.02.2015, 02:31:26
от Garter4ik
Не могу создать страницу. Прошу помощи

Автор Spaww

Ответов: 10
Просмотров: 1684
Последний ответ 07.02.2015, 23:57:43
от Spaww