Перейти до основного вмісту

sTask для Evolution CMS

sTask Latest Stable Version CMS Evolution PHP version License Issues Stars Total Downloads

Ласкаво просимо до sTask!

sTask — це потужна система управління асинхронними задачами, розроблена спеціально для Evolution CMS. Вона надає надійний фреймворк для створення, виконання та моніторингу фонових задач з автоматичним виявленням воркерів, комплексним логуванням та відстеженням прогресу в реальному часі.

Незалежно від того, чи потрібно вам обробляти великі імпорти даних, генерувати звіти, відправляти масові email-розсилки, синхронізувати з зовнішніми системами, чи виконувати інші ресурсомісткі операції, sTask надає інструменти для ефективної обробки цих задач без блокування основного застосунку.

👉 Почніть з Початок роботи або досліджуйте Керівництво розробника.

Ключові можливості

✅ Управління асинхронними задачами

  • Створення та виконання фонових задач - Виконуйте довгі операції без блокування
  • Система пріоритетів задач (низький, звичайний, високий) - Контролюйте порядок виконання
  • Автоматичний механізм повторних спроб - Налаштовувана кількість спроб для невдалих задач
  • Відстеження прогресу задач (0-100%) - Оновлення прогресу в реальному часі
  • Моніторинг статусу задач - Відстежуйте задачі протягом їх життєвого циклу
    • pending - Очікує виконання
    • running - Виконується зараз
    • completed - Успішно завершено
    • failed - Виконання невдале
    • cancelled - Скасовано вручну

✅ Система воркерів

  • Автоматичне виявлення воркерів - Сканування встановлених пакетів на наявність воркерів
  • Реєстрація та управління воркерами - Активація/деактивація воркерів
  • Валідація воркерів - Перевірка відповідності вимогам інтерфейсу
  • Множинні дії на воркер - Один воркер може обробляти кілька типів задач
  • Організація за scope - Фільтрація воркерів за модулем/пакетом
  • Власна реалізація воркерів - Розширюйте BaseWorker для власної логіки

✅ Логування на основі файлів

  • Комплексні логи виконання задач - Детальні логи для кожної задачі
  • Фільтрація логів за рівнем (info, warning, error) - Знаходьте потрібні записи
  • Завантаження та управління логами - Експортуйте логи для аналізу
  • Автоматична очистка логів - Видалення старих логів автоматично
  • Знімки прогресу - Файли прогресу в реальному часі в storage/stask/

✅ Адміністративний інтерфейс

  • Панель зі статистикою задач - Огляд всіх задач
  • Панель управління воркерами - Виявлення, активація, керування воркерами
  • Моніторинг задач в реальному часі - Спостерігайте за виконанням задач
  • Елементи керування виконанням задач - Запуск, зупинка, повтор задач
  • Чистий та сучасний UI - Побудовано з Tailwind CSS

✅ Інтеграція

  • Інтеграція з менеджером Evolution CMS - Доступ з меню Інструменти
  • Інтеграція меню з власним логотипом - Фірмовий пункт меню
  • Artisan команди - CLI інструменти для керування задачами
  • Composer пакет - Легке встановлення та оновлення
  • Автоматична публікація ресурсів - Автоматичне керування ресурсами

✅ Зручність для розробників

  • Простий API - Легкий у використанні facade та моделі
  • Добре задокументовано - Комплексна документація
  • PSR-4 автозавантаження - Стандартна PHP структура
  • Laravel інтеграція - Використовує компоненти Laravel
  • Розширювана архітектура - Легко розширювати та налаштовувати

Архітектура системи

┌──────────────────────────────────────────┐
│ Архітектура sTask │
├──────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Воркери │ │ Задачі │ │
│ ├──────────────┤ ├──────────────┤ │
│ │ Product │─────>│ Import CSV │ │
│ │ Email │─────>│ Send Campaign│ │
│ │ Report │─────>│ Generate PDF │ │
│ │ Cleanup │─────>│ Archive Data │ │
│ └──────────────┘ └──────────────┘ │
│ │ │ │
│ v v │
│ ┌────────────────────────────────┐ │
│ │ BaseWorker Клас │ │
│ ├────────────────────────────────┤ │
│ │ - createTask() │ │
│ │ - invokeAction() │ │
│ │ - pushProgress() │ │
│ │ - markFinished() │ │
│ │ - markFailed() │ │
│ └────────────────────────────────┘ │
│ │ │ │
│ v v │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Прогрес │ │ Логи │ │
│ │ Tracking │ │ Система │ │
│ ├──────────────┤ ├──────────────┤ │
│ │ storage/ │ │ storage/ │ │
│ │ stask/ │ │ stask/ │ │
│ │ {id}.json │ │ {id}.log │ │
│ └──────────────┘ └──────────────┘ │
│ │
└──────────────────────────────────────────┘

Швидкий приклад

Створіть воркер

<?php namespace MyPackage\Workers;

use Seiger\sTask\Workers\BaseWorker;
use Seiger\sTask\Models\sTaskModel;

class ProductWorker extends BaseWorker
{
public function identifier(): string { return 'product'; }
public function scope(): string { return 'mypackage'; }
public function icon(): string { return '<i class="fa fa-cube"></i>'; }
public function title(): string { return 'Product Worker'; }
public function description(): string { return 'Імпорт та експорт товарів'; }

public function renderWidget(): string
{
return view('mypackage::widgets.product')->render();
}

public function settings(): array
{
return ['batch_size' => 100];
}

// Дія: Імпорт товарів
public function taskImport(sTaskModel $task, array $options = []): void
{
$file = $options['file'];
$products = $this->readCsv($file);
$total = count($products);

foreach ($products as $i => $product) {
$this->importProduct($product);

// Оновлення прогресу
$this->pushProgress($task, [
'progress' => (int)(($i + 1) / $total * 100),
'processed' => $i + 1,
'total' => $total,
]);
}

$this->markFinished($task, null, "Імпортовано {$total} товарів");
}
}

Використайте воркер

use Seiger\sTask\Facades\sTask;

// Створити задачу
$task = sTask::create(
identifier: 'product',
action: 'import',
data: ['file' => 'products.csv'],
priority: 'high'
);

// Обробити задачі
$processed = sTask::processPendingTasks();

// Перевірити статус
if ($task->fresh()->isFinished()) {
echo "Імпорт завершено!\n";
}

Випадки використання

Електронна комерція

  • Імпорт/експорт товарів - Масове керування даними товарів
  • Синхронізація інвентарю - Синхронізація залишків з зовнішніми системами
  • Обробка замовлень - Пакетна обробка замовлень
  • Оновлення цін - Масові зміни цін
  • Реорганізація категорій - Реструктуризація каталогів товарів

Керування контентом

  • Міграція контенту - Переміщення контенту між системами
  • Оптимізація зображень - Пакетна обробка зображень
  • Перебудова індексу пошуку - Оновлення баз даних пошуку
  • Генерація sitemap - Створення XML-карт сайту
  • Прогрів кешу - Попереднє створення кешованих сторінок

Маркетинг

  • Email кампанії - Масова розсилка email
  • Розповсюдження розсилок - Відправка підписникам
  • Генерація звітів - Створення аналітичних звітів
  • Експорт даних - Експорт даних користувачів
  • Обробка аналітики - Обробка даних відстеження

Системне обслуговування

  • Очистка бази даних - Видалення старих записів
  • Архівування логів - Архівування та стиснення логів
  • Операції резервного копіювання - Створення системних бекапів
  • Очистка файлів - Видалення тимчасових файлів
  • Перевірки здоров'я - Задачі моніторингу системи

Вимоги

  • Evolution CMS 3.7+
  • PHP 8.3+
  • Composer 2.2+
  • Одна з: MySQL 8.0+ / MariaDB 10.5+ / PostgreSQL 10+ / SQLite 3.25+

Встановлення

cd core
composer update
php artisan package:installrequire seiger/stask "*"
php artisan vendor:publish --tag=stask
php artisan migrate

Налаштуйте cron для обробки задач:

* * * * * cd /path/to/your/project && php artisan schedule:run >> /dev/null 2>&1

Дивіться Початок роботи для детальних інструкцій встановлення.

Продуктивність

sTask розроблено для ефективності:

  • Відстеження прогресу на основі файлів - Без навантаження на базу даних під час виконання
  • Атомарні файлові операції - Потокобезпечні оновлення прогресу
  • Автоматична збірка сміття - Очистка старих файлів прогресу
  • Пакетна обробка - Ефективна обробка множинних задач
  • Черга пріоритетів - Виконання високопріоритетних задач першими
  • Управління пам'яттю - Підходить для великих наборів даних

Показники продуктивності

Типова продуктивність на стандартному обладнанні:

ОпераціяШвидкість
Створення задачі~5мс
Оновлення прогресу~2мс
Запис лога~3мс
Завершення задачі~8мс
Виявлення воркерів~100мс

Обробка 10,000 елементів:

  • Малі елементи (< 1KB): ~30 секунд
  • Середні елементи (< 100KB): ~2 хвилини
  • Великі елементи (< 1MB): ~5 хвилин

Продуктивність залежить від складності задачі та системних ресурсів.

Майбутні можливості

  • Планування задач - Планування задач як cron
  • Залежності задач - Ланцюжки задач
  • Email сповіщення - Отримуйте сповіщення про завершення
  • Метрики продуктивності - Аналітика та статистика задач
  • Підтримка вебхуків - Інтеграція зовнішніх систем
  • Шаблони задач - Багаторазові конфігурації задач
  • Підтримка мультисерверів - Розподіл задач між серверами
  • Розширені алгоритми черги - Краща пріоритизація
  • Групи задач - Групування пов'язаних задач
  • Умовне виконання - Запуск задач на основі умов

Спільнота та підтримка

Внесок

Внески вітаються! Будь ласка:

  1. Зробіть форк репозиторію
  2. Створіть гілку для функції
  3. Зробіть свої зміни
  4. Напишіть тести, якщо можливо
  5. Подайте pull request

Ліцензія

sTask — це програмне забезпечення з відкритим вихідним кодом, ліцензоване за MIT ліцензією.

Автори

Розроблено та підтримується Seiger.

Побудовано з: