5. Режимы обработки
Плагин создаёт копии картинок не мгновенно: на это нужно время и ресурсы сервера. Режим обработки отвечает на вопрос «кто и когда создаёт копии». Режим выбирается для каждой витрины отдельно: «Настройки» → «Производительность» → «Режим обработки».

Три режима
«При просмотре» (On-demand)
Копии создаются прямо во время просмотра страницы посетителем — но в пределах бюджета (см. ниже). Что не уместилось, остаётся в очереди и дорабатывается при следующих просмотрах; посетитель пока видит оригинал.
- Cron не нужен, работает на любом хостинге.
- Минус: часть работы выполняется в запросе посетителя. Первые посетители новых страниц могут чуть дольше ждать.
«Фоновый» (Background)
Просмотр страницы только ставит страницу в очередь, ничего не создаёт. Копии создаёт консольная команда, которую запускает cron по вашему расписанию.
- Запросы посетителей свободны от тяжёлой работы.
- Без cron или ручного запуска команды копии не создаются вообще — на странице настроек в этом случае показано красное предупреждение.
Smart Hybrid
Комбинация. Просмотр страницы ставит страницу в очередь и учитывает визит. Команда по cron создаёт копии, самые посещаемые страницы первыми. Пока команда не работает (нет завершённого запуска 15 минут), копии своей страницы создаёт сам запрос посетителя в пределах бюджета — как в режиме «При просмотре».
- Рекомендуется, если есть cron.
- Без cron ведёт себя как «При просмотре».
- Если сервер перегружен, закончилось место на диске или обработка поставлена на паузу, запрос посетителя ничего не создаёт (чтобы не усугублять).
| При просмотре | Фоновый | Smart Hybrid | |
|---|---|---|---|
| Нужен cron | нет | да | желателен |
| Что делает просмотр страницы | ставит в очередь и создаёт копии в пределах бюджета | только ставит в очередь | ставит в очередь, учитывает визит; создаёт копии сам, только пока фон не работает |
| Кто создаёт копии | запрос посетителя | команда по cron | команда по cron (популярные страницы первыми), при отсутствии cron — запрос посетителя |
| Что будет без cron | работает | копии не создаются | работает как «При просмотре» |
| Сервер перегружен или пауза | защищает бюджет запроса | ничего не создаётся | запрос посетителя ничего не создаёт |
| Для кого | хостинг без cron и SSH | сервер, где запросы посетителей должны быть свободны от обработки картинок | сервер с cron |
Какой магазин — какой режим
| Ваш магазин | Режим | Почему |
|---|---|---|
| Небольшой каталог, дешёвый хостинг, нет cron и SSH | При просмотре | Единственный режим, который работает без cron |
| Небольшой или средний каталог, cron есть | Smart Hybrid | Популярные страницы обрабатываются первыми, отказ cron не оставляет витрину без копий |
| Много картинок (тысячи и больше), слабый сервер, важно, чтобы посетители не ждали | Smart Hybrid или Фоновый, плюс паузы и пониженный порог нагрузки | Тяжёлая работа уходит из запросов посетителей |
| Облачное хранилище S3 или очень крупные картинки | Фоновый (или Smart Hybrid) | Кодирование в запросах посетителей нежелательно |
| Важно, чтобы без cron картинки всё равно появлялись | При просмотре или Smart Hybrid | В «Фоновом» без cron копий не будет |
| Хотите только попробовать | Оставьте как есть | После обновления с 3.3.0 — «При просмотре», на новой установке — Smart Hybrid |
Все режимы безопасны: переключение между ними не удаляет очередь, созданные файлы и адреса. Посетитель, открывший страницу, в худшем случае получает оригинальные картинки, ошибки он не видит.
Что выбрано после установки и обновления
- Новая установка (у витрины ещё нет сохранённых настроек): Smart Hybrid. Без cron он работает как «При просмотре», сам по себе ничего не запускается.
- Обновление с 3.3.0 (настройки уже были сохранены): «При просмотре», как раньше. Обновление ничего не включает. Если у вас есть cron, выберите Smart Hybrid вручную.
Бюджет на запрос посетителя
Когда копии создаются в запросе посетителя (режимы «При просмотре» и Smart Hybrid без фона), плагин укладывается в бюджет, чтобы страница не «зависала»:
| Поле | По умолчанию | Смысл |
|---|---|---|
| Бюджет времени на запрос посетителя | 10 с | Проверяется перед каждой картинкой. 0 — действует только «Максимальное время выполнения задачи» |
| Изображений на запрос посетителя | 10 | Сколько исходных картинок обработать за один просмотр. 0 — без ограничения |
| Макс. размер исходника при просмотре | 0 (без отдельного лимита) | Картинки больше этого размера (в мегапикселях) в запросе посетителя не обрабатываются |
Картинки, которые не помещаются в память PHP, откладываются всегда, независимо от этих полей. Бюджет выше не должен превышать таймауты веб-сервера (fastcgi_read_timeout, request_terminate_timeout).
Эти три поля скрыты, когда выбран режим «Фоновый»: в нём посетитель ничего не создаёт.
Настройка cron
Плагин не создаёт cron сам. Расписание задаёте вы. Строка уже подготовлена на странице настроек (блок «Фоновая обработка», текст «Строка cron (каждую минуту)»): она подставляет правильный путь к вашему сайту. Скопируйте её оттуда:

Строка выглядит так (путь у вас свой):
* * * * * php /путь/к/сайту/cli.php shop responsiveimagesPluginBackground run > /dev/null 2>&1
Что она означает: каждую минуту запускать команду фоновой обработки; её вывод не нужен.
Важные правила
- Запускайте от пользователя веб-сервера — владельца папки
wa-data(например,www-data:crontab -u www-data -e). Иначе созданные файлы сайт не сможет прочитать или заменить. - Версия PHP в командной строке должна быть 8.2–8.5. Она может отличаться от версии сайта. На хостингах часто нужно указать полный путь, например
/usr/local/bin/phpили/usr/bin/php8.3, вместо простоphp. Какой путь верный, подскажет хостинг. - Достаточно раза в минуту. Один запуск работает до 50 секунд и обрабатывает до 100 картинок.
- Режим «Фоновый» или Smart Hybrid выберите в настройках и сохраните; иначе команда не найдёт витрин с включённой фоновой обработкой (в выводе будет
no_routes).
В панели хостинга
В панелях хостинга (ISPmanager, cPanel, Plesk, панели Beget, Timeweb и других) раздел называется по-разному: «Планировщик заданий», «Cron», «Задачи по расписанию». Общий порядок везде одинаков:
- Откройте раздел планировщика задач вашего хостинга. Если его нет, спросите поддержку: «Можно ли запускать php-скрипт по cron раз в минуту?» (на некоторых тарифах минимальный интервал больше — тогда выбирайте минимально возможный, например 5 минут).
- Создайте задачу с периодичностью «каждую минуту» (или минимальной доступной).
- В поле команды вставьте строку из настроек без пяти звёздочек в начале, если панель отдельно спрашивает расписание:
php /путь/к/сайту/cli.php shop responsiveimagesPluginBackground run. - Если панель разрешает выбрать пользователя или версию PHP, выберите пользователя сайта и PHP 8.2–8.5.
- Сохраните задачу. Через пару минут откройте вкладку «Диагностика»: должно появиться «Фоновая команда работает» и время последнего запуска.
Этот порядок общий; точный вид экранов зависит от вашего хостинга.
Если cron нет (общий хостинг)
Ту же команду можно запускать вручную по SSH, пока очередь не опустеет:
php /путь/к/сайту/cli.php shop responsiveimagesPluginBackground run
php /путь/к/сайту/cli.php shop responsiveimagesPluginBackground status
За один запуск команда обрабатывает до 100 картинок за 50 секунд. Без cron и без SSH используйте режим «При просмотре».
Команды
Все команды запускаются в консоли от пользователя веб-сервера в виде php /путь/к/сайту/cli.php shop responsiveimagesPluginBackground <команда>:
| Команда | Что делает |
|---|---|
run |
Один прогон обработки (это и есть строка для cron). Команда по умолчанию |
status |
Показывает режимы витрин, очередь, последний запуск, нагрузку, свободное место и строку для cron |
pause |
Ставит фоновую обработку на паузу для всех витрин. Запущенный прогон доделывает текущую картинку и останавливается |
resume |
Снимает паузу |
retry-quarantined |
Возвращает в очередь картинки из карантина |
repair-schema |
Достраивает таблицу очереди после обновления (если была большая очередь) |
sweep |
Удаляет старые версии файлов, срок хранения которых вышел (раздел 9) |
warmup --top 100 |
Возвращает в очередь самые посещаемые страницы, картинки которых не готовы. Каталог целиком не обходит |
Пример вывода status (значения условные):
paused (global): no
runners running now: 0
storefronts:
<хеш витрины>: background on, on_demand hybrid, mode hybrid, visitor queues only
claim columns (update 15): yes
tasks: 0 (processing 0, backoff 0, quarantine only 0)
images: 0 (due 0, of them deferred by on-demand 0; backoff 0; quarantined 0)
load (1 min): 0.41 on 12 cores = 0.03 per core (a run is refused above --max-load, default 0.7 ...)
last run: 2026-11-10 13:07:52
free disk: 901108 MB
cron (as the web server user): * * * * * php /путь/к/сайту/cli.php shop responsiveimagesPluginBackground run > /dev/null 2>&1
Параметры команды run
Параметры дописываются в конец строки; значение — следующим словом через пробел (например, --max-load 1.5).
| Параметр | По умолчанию | Смысл |
|---|---|---|
--max-time |
50 | Сколько секунд работает один прогон |
--max-images |
100 | Сколько картинок за прогон |
--max-tasks |
50 | Сколько страниц за прогон |
--memory-limit |
512M | Предел памяти прогона. Достигнут — прогон останавливается, следующий продолжит |
--min-free-disk |
200 | Минимум свободного места на диске, МБ |
--max-load |
0.7 | Порог нагрузки сервера (см. ниже). 0 — не проверять |
--sleep |
пауза витрины | Пауза между картинками в секундах |
--concurrency |
1 | Сколько процессов обработки одновременно (не более 4). Повышайте только на заметно свободном сервере |
--external-budget |
60 | Сколько секунд на внешние вызовы (например, GigaChat) на одну картинку |
Защита от перегрузки
Фоновая команда не должна «положить» сайт. У неё есть защита:
- Нагрузка сервера. Команда не стартует и останавливается между картинками, пока нагрузка сервера (load average за минуту на ядро) выше
--max-load(по умолчанию 0,7). Нагрузка самих процессов команды не учитывается. Чтобы выключить проверку, добавьте--max-load 0; чтобы разрешить работать на более занятом сервере — например,--max-load 1.5. Если число ядер определить нельзя (контейнеры, ограничения хостинга), проверка пропускается. - Место на диске. Нет
--min-free-disk(200 МБ) — прогон не стартует. - Память. Достигнут
--memory-limit— прогон останавливается. - Карантин. Картинка, которую не удалось обработать 3 раза, откладывается на 24 часа и затем обрабатывается снова. Вернуть сразу — ссылка «Повторить изображения из карантина» в настройках, команда
retry-quarantinedили сохранение настроек. Если после трёх таких кругов картинка так и не обрабатывается, она убирается из очереди (запись остаётся в журнале и во вкладке «Диагностика»). - Проверка нагрузки в запросах посетителей — отдельная настройка «Включить проверку нагрузки на сервер» (справочник).
- Пауза. Переключатель «Приостановить фоновую обработку для этой витрины (очередь сохраняется)» — для одной витрины; команда
pause— для всех.
На странице настроек и во вкладке «Диагностика» показана причина последнего отказа: нагрузка (load), диск (disk), пауза (paused), память (memory), незавершённое обновление таблицы очереди (schema).
Как включить фон по шагам (рекомендация)
- Начните с одной витрины: режим Smart Hybrid, «Сохранить».
- Добавьте cron. Если магазин большой (сотни тысяч картинок), сначала запускайте вручную маленькими порциями и смотрите нагрузку:
php /путь/к/сайту/cli.php shop responsiveimagesPluginBackground run --max-images 20 --max-time 20 php /путь/к/сайту/cli.php shop responsiveimagesPluginBackground status - Следите за нагрузкой процессора и памяти сервера, временем ответа витрины и вкладкой «Диагностика». Если нагрузка выросла —
pauseили вернитесь на «При просмотре». - Старые версии файлов удаляются в конце фонового запуска. Без cron вызывайте
sweepвручную.
Осторожные ориентиры: --concurrency 1 подходит почти всем; 2 — если сервер заметно свободен; 4 — максимум, только при свободных ядрах. Значения порогов проверены на лабораторном стенде, но не на вашем сервере — наблюдайте за нагрузкой.
Как выключить фон
Выберите режим «При просмотре» и нажмите «Сохранить», затем удалите строку из cron. Очередь и созданные файлы сохраняются.
Ручной запуск
Разовый запуск без cron — команда run по SSH (см. выше). Из браузера фоновую команду запустить нельзя: это сделано намеренно.
Приоритет по посещаемости (Smart Hybrid)
В режиме Smart Hybrid браузер посетителя один раз за сессию сообщает серверу о странице с необработанными картинками. Страницы с большим числом визитов обрабатываются раньше; половина задач прогона (не больше 25) берётся по числу визитов, остальные по порядку очереди — чтобы старые задачи не «голодали». Счётчик раз в сутки уменьшается вдвое. Роботы без JavaScript не учитываются. Для учёта визитов плагин ставит посетителю сессионную cookie ri_dm (см. Безопасность).
Страница, которую никто не открывал 30 дней, удаляется из очереди (срок не настраивается); при новом открытии она ставится в очередь заново.