Действия по расписанию

Содержание...

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».