Перейти к содержанию

Состав платформы

Расписания

Запуск операций по расписанию.

Другие решения раздела «Состав платформы»

Установка

Подключите пакет в корне проекта на SkeekS Платформе, затем примените миграции проекта.

composer require skeeks/cms-agent

Инструкция из репозитория

Agents for SkeekS CMS

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist skeeks/cms-agent "*"

or add

"skeeks/cms-agent": "*"

Configuration app


'bootstrap' => ['cmsAgent'],

'components' =>
[
    'cmsAgent' => [
        'class'             => 'skeeks\cms\agent\CmsAgentComponent',
        'onHitsEnabled'     => true
    ],

    'i18n' => [
        'translations' =>
        [
            'skeeks/agent' => [
                'class'             => 'yii\i18n\PhpMessageSource',
                'basePath'          => '@skeeks/cms/agent/messages',
                'fileMap' => [
                    'skeeks/agent' => 'main.php',
                ],
            ]
        ]
    ]
],

'modules' =>
[
    'cmsAgent' => [
        'class'         => 'skeeks\cms\agent\CmsAgentModule',
    ]
]

How to enable execution on cron agents

Configuration app

'components' =>
[
    'cmsAgent' => [
        'class'             => 'skeeks\cms\agent\CmsAgentComponent',
        'onHitsEnabled'     => false
    ],
]

Cront task
* * * * * cd /var/www/sites/you-site.com/ && php yii cmsAgent/execute

Native job schedules

With skeeks/cms-job installed, a schedule can enqueue a registered job directly, without a console command. In the standard admin form select «Фоновое задание», choose a registered type and supply a JSON object of handler parameters (or leave it empty). The queue belongs to the job type, not to the schedule. A worker is required to execute queued work.

Packages register system schedules under cmsAgent.jobs using a stable code:

'components' => [
    'cmsAgent' => [
        'jobs' => [
            'daily-export' => [
                'jobType' => 'my.export', // Must exist in jobRegistry.types.
                'name' => 'Daily export',
                'interval' => 86400,
                'jobPayload' => ['catalog_id' => 123],
            ],
        ],
    ],
],

«Загрузить агенты» synchronizes these records as job:<code> within the current CMS site. The code is the persistent schedule identity; changing it creates a different schedule. System fields are edited in package config, not the admin form. No new schema migration is needed beyond the existing job_type / job_payload migration.

Existing cmsAgent.commands (including their optional jobType bridge) remain supported. Unknown job types and missing cms-job fail closed: the schedule name is never executed as a console command. An existing broken schedule can still be disabled without changing its job configuration.

Manual and scheduled pushes use the same deduplication key and skip overlap policy. Manual start does not change the next scheduled time. The standard card and related run-history tab separate schedule timestamps from job execution state. Job-type permissions are enforced by validation and the manual-start endpoint.

Run isolated checks (SQLite in memory, no project configuration loaded):

SKEEKS_APP_ROOT=/app php vendor/skeeks/cms-agent/tests/native-schedules-smoke.php

Links


skeeks!
SkeekS CMS (Yii2) — quickly, easily and effectively!
skeeks.com | cms.skeeks.com

README на GitHub

Поддержка

Вопросы по установке и работе решения можно задать командой SkeekS или завести обращение в репозитории.

Обновления

v3.3.0

3.3.0 — Выбор настроек фонового задания в расписании

При создании расписания теперь можно выбрать сохранённую настройку операции из списка. Для экспорта отображаются настройки текущего сайта, а название расписания заполняется автоматически.

  • Добавлен интерфейс поставщиков настроек JobTargetProviderInterface.
  • Параметры задания формируются и проверяются на сервере с учётом сайта.
  • Для остальных типов сохранён ввод JSON и возможность отключения некорректного расписания.
  • Исправлены отступы поля выбора настройки.

Проверены сохранение и восстановление выбора, изоляция сайтов и постановка задания из расписания.

v3.2.5

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

Убрано автоматическое удаление и упоминание удаления в сводке загрузки. Удаление выполняется отдельно явным действием администратора.

Проверено: 43 проверки на SQLite в памяти, включая повторную загрузку и сохранение отсутствующего в конфигурации расписания. Миграции пакета не требуются. Ранее удалённые расписания необходимо восстановить отдельно.

v3.2.4

3.2.4

  • Сообщение «Расписание без задержек» скрыто при нормальной работе; предупреждения сохранены.
  • Описание раздела перенесено в информационный блок вместо пояснения про результаты прямых команд.
  • Убран отдельный заголовок H1.

Проверен PHP-синтаксис. URL и логика выполнения расписаний не менялись, новые миграции не требуются.

v3.2.3

3.2.3

  • Раздел «Агенты» переименован в «Расписание» с кратким пояснением назначения. URL и имя пакета сохранены.
  • Добавлены фильтры по способу запуска, результату и текущему состоянию; убрана кнопка общей остановки.
  • Загрузка расписаний сравнивает конфигурацию с базой текущего сайта. Кнопка появляется только при различиях и показывает их количество; новые, изменённые и устаревшие записи перечислены отдельными счётчиками.
  • Синхронизация применяет только различия, сохраняет ручную активность и состояние выполнения. Добавлен отступ под информационным блоком.

Проверены PHP-синтаксис, 56 изолированных проверок, фильтрация в браузере и оформление в светлой и тёмной темах. Новые миграции не требуются. Обновление установленных сайтов выполняется отдельно.

v3.2.2

3.2.2

  • Строки агентов подсвечиваются по результату задания: ошибка — красным, замечания — оранжевым, успешное выполнение — зелёным. Используются общие классы и переменные админки, без нового CSS для цветов.
  • Над таблицей показывается предупреждение, если следующий запуск активного агента текущего сайта просрочен более чем на минуту. Наличие cron-заданий на сервере не проверяется.
  • Дата последнего запуска убрана из таблицы и сохранена в карточке агента.
  • Системные агенты отмечены замочком, у остальных ячейка пустая.

Проверены синтаксис PHP и JavaScript, 34 изолированные проверки расписаний, 8 переходов состояния подсветки и отображение в светлой и тёмной темах. Новые миграции не требуются. Обновление боевых сайтов выполняется отдельно.

v3.2.1

Убрано автоматическое обновление списка агентов каждые 15 секунд. Обновление статусов фоновых заданий и перезагрузка после ручных действий сохранены. Миграции не требуются.

v3.2.0

Добавлена поддержка родных job в расписаниях cmsAgent.jobs без консольной команды.

  • Обновлены стандартные форма, карточка и список агентов: выбор типа задания, JSON-параметры, очередь и запуск.
  • Добавлена проверка зарегистрированного типа, прав и параметров; системные поля защищены.
  • Недоступное задание не превращается в консольный запуск; существующее расписание можно безопасно отключить.
  • Загрузка конфигурации выполняется транзакционно в пределах текущего сайта.
  • Старые консольные агенты и мост запуска через очередь сохранены.

Проверки: PHP lint, 28 изолированных тестов SQLite в памяти и проверка интерфейса на localhost. Новых миграций в этом релизе нет. Для выполнения job нужны cms-job и работающие воркеры. Релиз не переводит существующие команды на очередь автоматически.

v3.1.0.2

3.1.0.2

  • Необязательная интеграция с skeeks/cms-job: постановка задания по расписанию вместо прямого исполнения консольной команды.
  • Настройка jobType/jobPayload в конфигурации команды и полях агента.
  • Ручной запуск, состояние задания, карточка расписания и связанная история через стандартные backend actions.
  • Человекочитаемый интервал расписания.

Перед использованием применить миграцию m260822_220000__alter_table__cms_agent__job_type через php yii cms/migrate. Миграция нужна и проектам без cms-job. Выполнять до возобновления расписания. Для очередей установить cms-job 1.0.0 и настроить обслуживание нужных полос. Без компонента jobs сохраняется прямой запуск команд.

Проверены PHP-синтаксис и интеграционный мост в регрессионном прогоне cms-job на отдельной БД. Выкладка и миграции боевых проектов этим релизом не выполняются.

v3.1.0.1

Release 3.1.0.1

v3.1.0
Показать ещё 10 обновлений осталось 44