Webasyst позволяет создавать скрипты, которые могут выполняться по расписанию серверным планировщиком (cron). Эта возможность доступна разработчикам приложений и плагинов.
В скриптах, выполняемых серверным планировщиком, можно использовать классы приложения или плагина — так же, как в коде обычных контроллеров.
Создание скрипта
Для каждого действия, которое должно выполняться планировщиком, нужно создать отдельный файл:
- Для приложений
wa-apps/[app_id]/lib/cli/[app_id][Action_name].cli.php
Пример:
wa-apps/myapp/lib/cli/myappDo.cli.php
- Для плагинов
wa-apps/[app_id]/plugins/[plugin_id]/lib/cli/[app_id][Plugin_id]Plugin[Action_name].cli.php
Пример:
wa-apps/someapp/plugins/my/lib/cli/someappMyPluginDo.cli.php
Здесь action_name — это произвольный текстовый идентификатор скрипта, который формируется на усмотрение разработчика и который должен по возможности показать пользователю назначение скрипта.
В этом файле нужно объявить класс, унаследованный от waCliController
. Логика, выполняемая при вызове задания планировщика, должна быть описана в методе execute()
.
Имя класса должно быть построено по следующему правилу:
- Для приложений
[app_id][Action_name]Cli
- Для плагинов
[app_id][Plugin_id]Plugin[Action_name]Cli
Пример
<?php //для приложения class myappDoCli extends waCliController { public function execute() { // здесь код, который должен запуститься // можно использовать модели и любые другие классы приложения waLog::log("Hello world!"); } } //для плагина class someappMyPluginDoCli extends waCliController { public function execute() { // здесь код, который должен запуститься // можно использовать модели и любые другие классы приложения и плагина waLog::log("Hello world!"); } }
Команда для запуска скрипта
В настройках задания планировщика cron нужно указать команду следующего вида для запуска скрипта:
- Для приложений
php [путь к директории Webasyst]/cli.php [app_id] [action_name]
Пример:php /var/www/wa/cli.php myapp do
- Для плагинов
php [путь к директории Webasyst]/cli.php [app_id] [plugin_id]Plugin[Action_name]
Пример:php /var/www/wa/cli.php someapp myPluginDo
Во время разработки работоспособность скрипта можно проверять, выполняя эту команду в консоли сервера.
Включение скрипта в расписание планировщика
Пример описания задания в конфигурационном файле Cron:
*/10 * * * * /usr/bin/php /var/www/webasyst/cli.php myapp do
Подробнее о конфигурировании заданий Cron можно прочитать в разделе «Настройка Cron».