Начало работы
Требования
- Evolution CMS 3.7+
- PHP 8.3+
- Composer 2.2+
- Одна из: MySQL 8.0+ / MariaDB 10.5+ / PostgreSQL 10+ / SQLite 3.25+
Установка
Шаг 1: Перейдите в директорию Core
cd core
Шаг 2: Обновите Composer
composer update
Шаг 3: Установите пакет
php artisan package:installrequire seiger/stask "*"
Шаг 4: Опубликуйте ресурсы
php artisan vendor:publish --tag=stask
Эта команда опубликует:
- Файлы конфигурации в
core/config/app/aliases/ - Публичные ресурсы (CSS, JS, изображения) в
public/assets/site/ - Создаст директорию хранилища
storage/stask/
Шаг 5: Запустите миграции
php artisan migrate
Это создаст две таблицы базы данных:
s_workers- Конфигурации воркеровs_tasks- Записи задач и история выполнения
Также создается право доступа stask для контроля доступа к интерфейсу sTask.
Шаг 6: Настройка Обработчика Задач
Команда обработчика задач автоматически обрабатывает ожидающие задачи. Для непрерывной обработки добавьте в crontab:
* * * * * cd /path/to/your/project && php artisan schedule:run >> /dev/null 2>&1
Примечание: Воркеры автоматически обнаруживаются при открытии вкладки Воркеры в админ-панели. Ручное обнаружение не требуется!
Где найти модуль
После установки, получите доступ к sTask через:
Менеджер → Инструменты → Менеджер Задач
Вы увидите:
- Вкладка Панель - Статистика задач и последние задачи
- Вкладка Воркеры - Управление воркерами и автоматическое обнаружение
Быстрое руководство
1. Создайте свою первую задачу (программно)
use Seiger\sTask\Facades\sTask;
// Создать простую задачу
$task = sTask::create(
identifier: 'product_sync', // Идентификатор воркера
action: 'import', // Действие для выполнения
data: [ // Данные задачи
'file' => '/path/to/products.csv',
'delimiter' => ',',
'skip_first_row' => true
],
priority: 'normal', // 'low', 'normal', 'high'
userId: evo()->getLoginUserID()
);
echo "Задача #{$task->id} создана успешно!\n";
2. Проверьте статус задачи
// Получить задачу по ID
$task = \Seiger\sTask\Models\sTaskModel::find(1);
// Проверить статус
if ($task->isPending()) {
echo "Задача ожидает обработки\n";
}
if ($task->isRunning()) {
echo "Задача выполняется сейчас\n";
echo "Прогресс: {$task->progress}%\n";
}
if ($task->isFinished()) {
echo "Задача завершена\n";
echo "Статус: {$task->status_text}\n";
echo "Сообщение: {$task->message}\n";
}
// Получить детальную информацию
echo "Воркер: {$task->identifier}\n";
echo "Действие: {$task->action}\n";
echo "Создано: {$task->created_at}\n";
echo "Запустил: Пользователь #{$task->started_by}\n";