Skip to content
modSizeControl
modSizeControl
Сколько места занимает сайт на MODX 2 и 3, что именно его занимает и сколько осталось до лимита
  1. Компоненты
  2. modSizeControl
  3. Сканирование и cron

Сканирование и cron ​

Страница и виджет показывают не живой размер папок, а итоги последнего сканирования. Считать размер при каждом открытии рабочего стола на сайте с десятками тысяч файлов было бы слишком долго, поэтому modSizeControl один раз обходит сайт и запоминает, что сколько весит.

Запуск ​

Из менеджера сканирует пользователь с правом settings.

По шагам ​

Сканирование идёт шагами по несколько секунд. Поэтому большой сайт не упирается в max_execution_time, а прерванное сканирование продолжается с того же места.

  • Страницу можно закрыть: сканирование продолжится, когда вы откроете страницу или рабочий стол снова.
  • Два окна или окно и cron не обходят одни и те же папки: пока шаг занят, второй ждёт.
  • Если незаконченное сканирование начато больше суток назад, оно отбрасывается и начинается заново: файлы за это время успели измениться.
  • «Остановить» прерывает сканирование и выбрасывает собранное. Итоги предыдущего сканирования остаются.

Что обходится ​

Корень сайта и всё, что MODX держит вне его: ядро, assets, менеджер и коннекторы, если они вынесены, а также источники файлов из настройки modsizecontrol_file_system.

Категории определяются по путям из констант MODX, так что переименованные и вынесенные папки распознаются правильно. Источник файлов вне assets считается медиа.

Размер — настоящий размер файлов, без округления до блоков диска. По символическим ссылкам сканирование не ходит: так то, что лежит в другом месте, не посчитается дважды.

Что хранится ​

ЧтоСколько
Папки и типы файлов в нихтолько у последнего сканирования
Крупные файлы, от 100 КБ5000 самых крупных у последнего сканирования
Итоги: размер, число файлов и папок, категории, типы, компонентыпоследние 500 сканирований, вкладка «История»

Cron ​

Для сканирования по расписанию в компоненте есть скрипт:

bash
php core/components/modsizecontrol/cli/scan.php

Например, каждую ночь в три часа:

bash
0 3 * * * php /var/www/site/core/components/modsizecontrol/cli/scan.php > /dev/null 2>&1

Скрипт сам находит сайт: поднимается от своей папки до config.core.php, а если ядро вынесено за пределы сайта — берёт путь из config.inc.php ядра. Если ключ конфигурации не config, передайте его переменной окружения MODX_CONFIG_KEY.

Сканирование, начатое в менеджере, скрипт продолжит, а не начнёт второе. По ходу он печатает прогресс, а код выхода 0 означает, что сканирование закончено; при ошибке — 1 и причина в stderr.

Подсказка

Запускайте скрипт от того же пользователя, от которого работает PHP сайта. Иначе часть папок может оказаться недоступна для чтения, а файлы кеша, созданные скриптом, — для веб-сервера.