gendoria /
提供命令队列的库
0.2.1
2016-10-24 13:59 UTC
Requires
- php: >=5.5.0
- psr/log: ~1.0
Requires (Dev)
- symfony/console: ~2.7|~3.0
Suggests
- symfony/console: To be able to register and run workers via console command.
This package is auto-updated.
Last update: 2024-08-27 05:06:03 UTC
README
此库提供了创建命令后端代理系统的基本接口和工具,允许通过可扩展的后端工作基础设施处理任务。
与Isobar Poland合作创建的库。
安装
步骤 1:下载库
打开命令行控制台,进入您的项目目录,然后执行以下命令以下载此软件包的最新稳定版本
$ composer require gendoria/command-queue "~0.2.0"
此命令要求您全局安装了Composer,如Composer文档中的安装章节所述。
使用方法
此库提供了创建命令队列系统的构建块,您可以将任务委托给后端工作进程池以进行进一步处理。
就本身而言,它有一个简单的“直接”命令队列实现,其中命令不是发送,而是在本地由驱动程序执行。
使用直接处理驱动程序的最简单的工作队列链示例如下。
use Gendoria\CommandQueue\Command\CommandInterface; use Gendoria\CommandQueue\CommandProcessor\CommandProcessorInterface; use Gendoria\CommandQueue\ProcessorFactory\ProcessorFactory; use Gendoria\CommandQueue\SendDriver\DirectProcessingDriver; use Psr\Log\LoggerInterface; class SimpleCommand implements CommandInterface { public $testData; public function __construct($testData) { $this->testData = $testData; } } class SimpleProcessor implements CommandProcessorInterface { /** * * @var LoggerInterface */ private $logger; /** * Process command. * * @param SimpleCommand $command */ public function process(CommandInterface $command) { echo "Command class: ".get_class($command)."\n"; echo "Command payload: ".$command->testData."\n"; echo "\n"; } public function setLogger(LoggerInterface $logger) { $this->logger = $logger; } public function supports(CommandInterface $command) { return $command instanceof SimpleCommand; } } $simpleProcessor = new SimpleProcessor(); $processorFactory = new ProcessorFactory(); $processorFactory->registerProcessorForCommand(SimpleCommand::class, $simpleProcessor); $driver = new DirectProcessingDriver($processorFactory); for ($k = 0; $k < 5; $k++) { $command = new SimpleCommand("Test ".($k+1)); $driver->send($command); sleep(1); }
您可以在examples/direct.php
文件中找到此示例。如果您运行它,您应该看到以下输出
$ php example/direct.php Command class: SimpleCommand Command payload: Test 1 Command class: SimpleCommand Command payload: Test 2 Command class: SimpleCommand Command payload: Test 3 Command class: SimpleCommand Command payload: Test 4 Command class: SimpleCommand Command payload: Test 5
直接处理驱动程序在现实世界的应用程序中不太适用,因为它不委托任何任务。但是,您可以在应用程序开发的早期阶段使用它,当您知道,对于您计划稍后委托给后端处理的任务。