image
Проблема: Сайт на MODX Revolution работал с ошибками. Хостинг-провайдер зафиксировал превышение лимита PHP-процессов тарифного плана: 36 активных процессов при лимите 32. После принудительного завершения процессы автоматически восстанавливались до прежнего количества. Диагностика: Подключился по SSH к хостингу (ISPmanager). Получил данные для подключения к БД из конфига MODX (core/config/config.inc.php). Через SQL-запросы к БД проверил: настройки кэша (modx_system_settings) - кэш включён, но покрытие низкое количество опубликованных ресурсов - 2004 страницы при 171 файле кэша (покрытие менее 10%) шаблоны с некэшируемыми вызовами ([[!...]]) Причина: В трёх шаблонах сайта (основной, текстовый, сертификаты) сниппет getImageList был вызван с принудительным отключением кэша. При этом параметр docid был захардкожен - данные всегда статичные, независимо от страницы. Из-за одного некэшируемого вызова вся страница не сохранялась в кэш, и каждый визит генерировал страницу заново через PHP. Решение: Перед правками сделал резервную копию таблицы шаблонов. Убрал принудительное отключение кэша у трёх статичных вызовов getImageList через SQL UPDATE. Некэшируемые вызовы с реальной динамикой (msProducts с RAND(), AjaxForm, mFilter2) не трогал - они обоснованно некэшируемые. После правок очистил core/cache/resource/ для принудительного прогрева кэша с новыми настройками. Результат: PHP-процессы снизились с 36 до 8 - в 4.5 раза. Сайт работает в рамках лимитов тарифного плана без ошибок.