Форум русской поддержки Joomla!® CMS
23.06.2017, 12:47:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: 1 [2]  Все   Вниз
  Добавить закладку  |  Печать  
Автор

Плагин OptimizeTables для Joomla 1.6/1.7/2.5

 (Прочитано 11134 раз)
0 Пользователей и 1 Гость смотрят эту тему.
b2z
Support Team
*****

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7724


Разраблю понемногу


« : 28.02.2011, 01:18:14 »

OptimizeTables - небольшой системный плагин, позволяющий производить ежедневную автоматическую оптимизацию таблиц БД. Это модификация плагина OptimizeTables для Joomla 1.5 и Joomla 1.0, автором которого является smart.

В настройки я добавил возможность починки таблиц. Но я рекомендую все же делать починку таблиц вручную.

[вложение удалено Администратором]
« Последнее редактирование: 15.02.2012, 17:17:50 от bzzik » Записан
 
smart
Администратор
*******

Репутация: +1309/-14
Offline Offline

Пол: Мужской
Сообщений: 6850


снова дома...


« Ответ #31 : 14.06.2013, 14:59:56 »

Это же получение параметра, а значит и запрос в базу для их чтения. Или $this->params для всех плагинов инициализируются каким-то одним глобальным запросом? Я как-то не копал в эту сторону и не знаю, как там Joomla их подгружает, но мне это кажется нелогичным.
Хы, прикольно. А ты не знал этого? Когда ты взываешь JPluginHelper::importPlugin, выполняется вот такой код:
Код
					$className = 'plg' . $plugin->type . $plugin->name;
if (class_exists($className))
{
// Load the plugin from the database.
if (!isset($plugin->params))
{
// Seems like this could just go bye bye completely
$plugin = self::getPlugin($plugin->type, $plugin->name);
}
 
// Instantiate and register the plugin.
new $className($dispatcher, (array) ($plugin));
}
а в getPlugin, в свою очередь, вызывается метод _import, в котором выборка из базы трех полей folder, element и params.

К слову сказать это одна из самых существенных оптимизаций в Joomla 1.5 - раньше каждый плагин грузил свои параметры раздельно, несмотря на то, что запрос к БД все равно был для получения информации о статусе публикации плагинов. А данная реализация позволила существенно снизить нагрузку на базу. Я удивлен, что ты не в курсе этой истории, мы это много обсуждали.


Либо хранить их в отдельном файле, либо в классе определить как константы: время и период.
Оно раньше в файлах и хранилось, но были проблемы с правами доступа и прочим. Поэтому я придумал эту схему.

В таких случаях наверное лучше писать в близлежащий файл переменную без обращения к базе
Как я писал выше - так оно и было, но были проблемы с правами.

В принципе, можно в плагине вызов функции с оптимизацией делать через кэш, тогда она будет выполняться с периодичностью, равной времени кэширования. Можно пойти дальше, сделать в плагине свои настройки кэширования, и инициализировать кэш с доп. параметрами, тем самым перебросив задачу ограничения периодичности вызов на систему кэширования - она просто не будет вызывать оптимизацию, пока кэш валиден.
Записан
b2z
Support Team
*****

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7724


Разраблю понемногу


« Ответ #32 : 14.06.2013, 15:23:29 »

Хмм, не помню, когда об этом говорили Roll Eyes А какой цикл жизни у объекта $plugin в нашем случае? Похоже что onAfterInitialise не обнуляет $plugins?
« Последнее редактирование: 14.06.2013, 15:31:56 от b2z » Записан
Fedor Vlasenko
Профи
********

Репутация: +703/-5
Offline Offline

Пол: Мужской
Сообщений: 3832


Все начинается с Value


« Ответ #33 : 14.06.2013, 15:25:44 »

Не вижу ничего лучшего чем писать в файл. И какая проблема  с правами закрыли папку, файл от доступа через .htaccess
Записан
smart
Администратор
*******

Репутация: +1309/-14
Offline Offline

Пол: Мужской
Сообщений: 6850


снова дома...


« Ответ #34 : 14.06.2013, 16:18:53 »

А какой цикл жизни у объекта $plugin в нашем случае?
Я так понимаю до завершения запроса. Там нет никакой привязки группы плагинов к жизненному циклу, поэтому загрузили группу - данные висят в памяти, кто ж знает, на каком событии тот или иной плагин вызовут? Может быть и на onAfterRender...

Не вижу ничего лучшего чем писать в файл.
Ну ты может быть и не видишь, а если тему не стерли - можно поискать, посчитать, сколько было жалоб, что плагину не хватает прав на запись файла... Я же не просто так переделывал логику. Да  зачем файл, если и так проблем быть не должно?

Вот чем столько времени тратить на обсуждение - давно бы уже посмотрели в коде, почему вызовы идут часто. Скорее всего параметры плагина либо не обновляются, либо они кэшируются, и в этом случае надо после обновления кэш почистить.
Записан
Страниц: 1 [2]  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet