Страница 1 из 14

[Модуль] Optimizer (optimizer)

Добавлено: Пт фев 26, 2016 6:42 pm
sergejey
Добавил в маркет модуль, который предназначен для оптимизации истории значений свойств, хранящихся в системе. Фактически, это замена вот этого скрипта. Работает точно так же, только более удобный интерфейс добавления правил оптимизации.

Для добавления правила надо сначало провести анализ (кнопка Analyze):

Изображение

После анализа можно добавить отдельные значения в правила оптимизации:
Изображение

хранить историю, дней: Все значения более количества дней будут убиваться

Optimize:
  • None - Не оптимизировать
  • AVG - Среднее
  • MAX - По максимуму
  • SUM - Сумма
Алгоритм: Оптимизация работает по прогрессивной шкале, в зависимости от старости данных. Самые свежие с самым малым интервалом усредняются (3 минуты), старше одного дня 20 минут, старше недели 60 минут, старше месяца 2 часа.

Важно: Значения класса и объекта можно оставлять пустыми, тогда правило оптимизации будет применено ко всем свойствам с таким названием. Т.е. нет необходимости (но есть возможность) добавлять индивидуальные правила для каждого свойства -- можно делать общие.

По кнопке Optimize Now происходит оптимизация данных в соответствие с добавленными настройками
Изображение

В общих настройках можно задать автоматический запуск процесса оптимизации раз в сутки в указанное время:
Изображение

Re: Модуль Optimizer

Добавлено: Пт фев 26, 2016 9:17 pm
olehs
Настроил 3 правила на самые большие свойства.
Нажал Optimize Now.
Сразу же открылась новая вкладка Optimize.
Повторный Анализ показал, что к-во данных не изменилось, а судя по описанию алгоритма - должно было.

UPD. Нашел ошибочку в шаблоне. Создал Pull Request

Re: Модуль Optimizer

Добавлено: Пт фев 26, 2016 10:05 pm
sergejey
Ага, спасибо, исправил.

Re: Модуль Optimizer

Добавлено: Пт фев 26, 2016 10:07 pm
olehs
Это Вам спасибо за модуль.
А может еще где-то set_time_limit добавить?

Re: Модуль Optimizer

Добавлено: Пт фев 26, 2016 10:44 pm
sergejey
olehs писал(а):Это Вам спасибо за модуль.
А может еще где-то set_time_limit добавить?
Да, в метод optimizeAll надо добавить set_time_limit(0);
У меня доступа к исходникам сейчас нет, так что в понедельник залью. Без этого оно тоже будет работать, но только в автоматическом режиме -- вручную после 60 секунд отрубается.

Re: Модуль Optimizer

Добавлено: Вс фев 28, 2016 12:41 pm
Amarok
sergejey писал(а):В общих настройках можно задать автоматический запуск процесса оптимизации раз в сутки в указанное время:
Изображение
А минуты не задаются :cry: Хочу оптимизацию в 5:11 :)

Re: Модуль Optimizer

Добавлено: Вс фев 28, 2016 1:15 pm
smoker_vvo
Знакомые грабли.... Надо бы как то убрать...
Fatal error: Maximum execution time of 60 seconds exceeded in C:\_majordomo\htdocs\lib\mysqli.class.php on line 146

Re: Модуль Optimizer

Добавлено: Пн фев 29, 2016 11:43 am
sergejey
Проблему с лимитом времени исправил.
Минуты нельзя настраивать из-за того, что модуль подписывается на событие HOURLY, т.е. раз в час в 00 минут вызывается процедура обработки и в ней уже сравнивается время.
Кстати, кто разрабатывает свои модули, обратите внимание как это сделано -- в качестве альтернативы прописывания в onNewHour.

Re: Модуль Optimizer

Добавлено: Пн фев 29, 2016 12:45 pm
Amarok
sergejey писал(а):Минуты нельзя настраивать из-за того, что модуль подписывается на событие HOURLY, т.е. раз в час в 00 минут вызывается процедура обработки и в ней уже сравнивается время.
А через ссылку (getURL) возможно оптимизацию запустить?

Re: Модуль Optimizer

Добавлено: Пн фев 29, 2016 12:47 pm
sergejey
Amarok писал(а):
sergejey писал(а):Минуты нельзя настраивать из-за того, что модуль подписывается на событие HOURLY, т.е. раз в час в 00 минут вызывается процедура обработки и в ней уже сравнивается время.
А через ссылку (getURL) возможно оптимизацию запустить?
Можно попробовать:

Код: Выделить всё

getURL("http://localhost/admin.php?pd=pz_&md=panel&inst=&action=optimizer&optimizenow=1",0);