1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jianglibin-yii2-crontab

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
readme.md 6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 02:53 307f425

Это инструмент для управления периодическими задачами, основанный на Yii2.

Он не только поддерживает Yii2, но и может быть использован как отдельный компонент или микрофреймворк.

Особенности:

  • Поддержка разработки под Windows и развёртывания в Linux.
  • Мониторинг состояния задач и веб-визуализация управления.
  • Автоматическое перезапуск при сбое сервера.
  • Возможность встраивания во все основные PHP-фреймворки.
  • Разнообразные типы драйверов для удовлетворения потребностей одно- или многомашинного развёртывания: файлы (file) и MySQL.
  • Совместимость с синтаксисом crontab на 90%, гибкий и точный контроль времени выполнения задач.
  • Детализация времени — уровень минут.

Зависимости:

  • PHP 5.6+ или PHP 7+.
  • Функция proc_open.
  • Для производственной среды на Linux требуется crontab.
  • В среде Windows необходим имитатор crontab (faker-linux.php).

О проблеме с кодировкой символов в командной строке Windows:

Рекомендуется установить кодировку консоли в UTF-8.

Установка:

  1. Компонентное использование: composer require godv/yii2-crontab dev-master
  2. Независимый проект базовой версии (готовый к использованию): composer create-project godv/yii2-crontab-basic crontab-basic

Crontab:

В crontab службы Linux добавьте:

* * * * * /path/yii2-crontab/yii crontab/run

Документация:

  • Документация по подключению к ThinkPHP6.

Быстрый обзор:

Конфигурация:

Файл config/console.php:

<?php
    'controllerMap' => [
        'crontab' => [ 
            'class' => 'CrontabConsole\controllers\CrontabController',
            'driver' => [
                'class' => 'CrontabConsole\drivers\File',
                'tasks' => [
                    ['crontab_str' => '* * * * *', 'route' => 'example/minute'],
                    ['crontab_str' => '0 */1 * * *', 'route' => 'example/hours'],
                ]

                // 'class' => 'CrontabConsole\drivers\Mysql',
                // 'dsn' => 'mysql:host=localhost;dbname=test',
                // 'username' => 'root',
                // 'password' => 'root',
                // 'charset' => 'utf8',
            ],
        ],
    ],

Контроллер:

Файл commands/ExampleController.php:

<?php
namespace app\commands;

use Yii;
use yii\console\Controller;
use yii\console\ExitCode;

/**
 * 定时任务调度控制器
 */
class ExampleController extends Controller {
    /**
     * 测试每分钟运行
     */
    public function actionMinute() {
        echo 'run example/minute 每分钟运行一次',"\n";
        return ExitCode::OK;
    }

    /**
    * 测试每小时运行
    */
    public function actionHours() {
        echo 'run example/hours 每小时运行一次',"\n";
        return ExitCode::OK;
    }
}

Пример вывода:

.----------------.-------------.--------------.------------------.--------.------------.--------------.
|     route      | crontab_str | last_rundate |   next_rundate   | status | exec_count | exec_time(s) |
:----------------+-------------+--------------+------------------+--------+------------+--------------:
| example/minute | * * * * *   |              | 2020-10-26 17:56 | --     | 0          | 0            |
| example/hours  | 0 */1 * * * |              | 2020-10-26 18:00 | --     | 0          | 0            |
'----------------'-------------'--------------'------------------'--------'------------'--------------'

Команды:

  • crontab/run — запуск задачи.
  • crontab/drun — режим отладки для запуска.
  • crontab/status — мониторинг состояния задачи.
  • crontab/add — добавление задачи.
  • crontab/del — удаление задачи.
  • crontab/refrsh — обновление конфигурации задачи и её состояния.

Совместимость команд:

run drun add del refrsh
File × ×
Mysql ×

Crontab/run:

WWW\github\yii2-crontab>php yii crontab/run
Directory of WWW\github\yii2-crontab\example\runtime\crontab
2020/10/26  18:06                 0 2020-10-26-error.log --任务错误记录
2020/10/26  18:06                41 2020-10-26-output.log --任务输出记录
2020/10/26  18:06               631 crontab.data --用于存储任务运行状态

Команда crontab/run запускает задачу и перенаправляет вывод в консоль.

  • runtime/crontab/xxxx-xx-xx-error.log — файл с ошибками задачи.
  • runtime/crontab/xxxx-xx-xx-output.log — файл с выводом задачи.
  • runtime/crontab/crontab.data — данные о состоянии задачи (только для режима File).

Crontab/drun:

WWW\github\yii2-crontab\example>php yii crontab/drun
run example/minute 每分钟运行一次
.----------------.-------------.------------------.------------------.--------.------------.--------------.
|     route      | crontab_str |   last_rundate   |   next_rundate   | status | exec_count | exec_time(s) |

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/jianglibin-yii2-crontab.git
git@api.gitlife.ru:oschina-mirror/jianglibin-yii2-crontab.git
oschina-mirror
jianglibin-yii2-crontab
jianglibin-yii2-crontab
master