dpfaffenbauer / process-manager
进程管理器帮助您查看长时间运行的进程的状态
4.0.0-beta.2
2023-10-12 12:41 UTC
Requires
- coreshop/resource-bundle: ^4.0
- dragonmantank/cron-expression: ^3.0
- pimcore/pimcore: ^11.0
This package is auto-updated.
Last update: 2024-09-09 12:51:07 UTC
README
需求
- Pimcore 11
进程管理插件跟踪您所有的“长时间运行作业”。它为您的仪表板添加了原生GUI和一个新的组件。您还可以创建可执行文件并一键运行。(计划集成类似CRON的语法以处理重复任务)
使用进程管理器的插件
入门
- 通过composer安装
composer require dpfaffenbauer/process-manager:^2.0
- 通过命令行(或在pimcore扩展管理器中)启用:
bin/console pimcore:bundle:enable ProcessManagerBundle
- 通过命令行(或在pimcore扩展管理器中)安装:
bin/console pimcore:bundle:install ProcessManagerBundle
- 重新加载Pimcore
- 打开工具 -> 进程管理器
集成到您的任务中
创建新的进程
$processFactory = $container->get('process_manager.factory.process'); $process = $processFactory->createProcess( sprintf( 'Process (%s): %s', $date->formatLocalized('%A %d %B %Y'), 'Special Long Running Task' ), //Name 'special_task', //Type 'Message', //Message Text 100, //Total Steps 0 //Current Step ); $process->save(); //Save
推进进度
$process->progress(); $process->save();
完成进度
$process->setProgress($process->getTotal()); $process->save();
使用进程记录器
进程管理器还提供了记录您的进度中确切发生情况的日志的能力。
$logger = $container->get('process_manager.logger'); //Logs a emergency message $logger->emergency($process, 'Total of 100 entries found'); //Logs a alert message $logger->alert($process, 'Total of 100 entries found'); //Logs a critical message $logger->critical($process, 'Total of 100 entries found'); //Logs a error message $logger->error($process, 'Total of 100 entries found'); //Logs a warning message $logger->warning($process, 'Total of 100 entries found'); //Logs a notice message $logger->notice($process, 'Total of 100 entries found'); //Logs a info message $logger->info($process, 'Total of 100 entries found'); //Logs a debug message $logger->debug($process, 'Total of 100 entries found');
报告
您还可以进一步处理日志以创建漂亮的报告。为此,您必须创建一个新服务并实现接口 ProcessManagerBundle\Report\ReportInterface
。导入定义有一个示例实现 导入定义报告
添加新的进程类型
- 向您的Bundle添加一个新的类并实现 ``ProcessManagerBundle\Process\ProcessInterface``` 接口
- 向您的Bundle添加一个新的表单类型并向其中添加所需字段
- 添加一个新的服务,带有标签
process_manager.process
import_definition.process_manager.process: class: Wvision\Bundle\ImportDefinitionsBundle\ProcessManager\ImportDefinitionProcess tags: - { name: 'process_manager.process', type: 'importdefinition', form-type: 'Wvision\Bundle\ImportDefinitionsBundle\Form\Type\ProcessManager\ImportDefinitionsType' }
- 这就完成了。(您仍需要在您的Bundle中自己处理进程创建,其中没有魔法)
可停止的进程
您可以通过管理面板让用户停止您的进程。您需要将进程的可停止标志设置为true,并将其状态设置为 ProcessManagerBundle::STATUS_RUNNING
以显示停止按钮
$process->setStoppable(true);
$process->setStatus(ProcessManagerBundle::STATUS_RUNNING);
$process->save();
此外,您还需要在您的进程中实现停止逻辑。跟踪进程状态,并在其设置为 ProcessManagerBundle::STATUS_STOPPING
时停止您的进程
$process = $this->processRepository->find($processId); if ($process->getStatus() == ProcessManagerBundle::STATUS_STOPPING) { // Here goes your process stop and cleanup logic ... $process->setStatus(ProcessManagerBundle::STATUS_STOPPED); // remember to set the status to stopped. $process->save(); }
清理命令
您可以从控制台执行清理命令以删除旧进程条目和日志文件。要定期执行此操作,您可以将其添加为cron作业。
# delete all process entries from the database and log files older than 604800 seconds (7 days) $ ./bin/console process-manager:cleanup-process-data # delete all process entries from the database and log files older than 86400 seconds (1 days) $ ./bin/console process-manager:cleanup-process-data --seconds=86400 # delete only process entries from the database older than 604800 seconds (7 days) and keep the log files $ ./bin/console process-manager:cleanup-process-data --keeplogs
版权和许可
版权: lineofcode.at 关于许可详情,请访问 LICENSE.md