rnd-cosoft / queue
集成了各种队列管理系统的 Laminas 模块
Requires
- php: ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-json: *
- laminas/laminas-cli: ^1.2
- laminas/laminas-eventmanager: ^3.4
- laminas/laminas-servicemanager: ^3.11
- laminas/laminas-stdlib: ^3.7.1
Requires (Dev)
- laminas/laminas-config: ^3.7
- laminas/laminas-i18n: ^2.12
- laminas/laminas-log: ^2.15
- laminas/laminas-modulemanager: ^2.11
- laminas/laminas-mvc: ^3.3
- laminas/laminas-serializer: ^2.11
- laminas/laminas-view: ^2.13
- phpunit/phpunit: ^9.3
- squizlabs/php_codesniffer: ^3.6.2
Suggests
- rnd-cosoft/slm-queue-rabbitmq: If you are using RabbitMQ
- slm/queue-beanstalkd: If you are using Beanstalk
- slm/queue-doctrine: If you are using Doctrine ORM
- slm/queue-sqs: If you are using Amazon SQS
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.1-beta
- 3.0.1
- 3.0.0
- 3.0-beta.4
- 3.0-beta.3
- 3.0-beta.2
- 3.0-beta
- 2.1.0
- 2.0.1
- 2.0.0
- dev-master / 1.1.x-dev
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.8.0
- 0.7.0
- 0.6.0
- 0.5.1
- 0.5.0
- 0.4.2
- 0.4.1
- 0.4.0
- 0.4.0-beta3
- 0.4.0-beta2
- 0.4.0-beta1
- 0.3.0
- 0.3.0-rc1
- 0.3.0-beta3
- 0.3.0-beta2
- 0.3.0-beta1
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2
- 0.1
- dev-feature/test-build
- dev-id
- dev-correct-count
- dev-feature/simplified-listeners
This package is not auto-updated.
Last update: 2024-09-13 11:44:00 UTC
README
SlmQueue 是 Laminas(前身为 Zend Framework)和 Mezzio(前身为 Zend Expressive)应用程序的作业队列抽象层。它支持各种作业队列系统,使您的应用程序独立于使用的底层系统。当前支持的系统各有自己的适配器库
何时使用
作业队列有助于将客户端发送到 Laminas 应用程序的 HTTP 请求中的长或内存密集型过程卸载。这将缩短您的响应时间,使您的访客更加愉快。异步作业有许多用例,以下是一些示例
- 发送电子邮件
- 创建 PDF 文件
- 通过 HTTP 连接到第三方服务器
在所有情况下,您都希望尽快将响应提供给您的访客,而无需让他们等待这个过程。SlmQueue 使您能够轻松地在现有应用程序中实现作业队列系统。
安装
SlmQueue 与 Composer 一起工作。请确保您已下载 composer.phar 并在项目根目录中有一个 composer.json
文件。要安装它,请将以下行添加到您的 composer.json
文件中
"require": { "slm/queue": "^3.0" }
安装包后,您需要完成以下步骤才能使用 SlmQueue
- 通过在您的
application.config.php
文件中添加SlmQueue
来启用模块。 - 将
slm_queue.global.php.dist
(您可以在 SlmQueue 的config
文件夹中找到此文件)复制到您的config/autoload
文件夹中,并应用您想要的任何设置。
注意。SlmQueue 是一个框架,因此本身没有用。启用适配器以获得将作业推入队列所需的具体实现细节。安装一个可用的适配器(例如 SlmQueueDoctrine、SlmQueueRabbitMq 或 SlmQueueSqs)。
要求
- PHP >= 7.4
- laminas-servicemanager >= 3.3.1
代码示例
以下是一些片段,展示了 SlmQueue 在您的应用程序中的强大功能。完整文档可在 docs/ 目录中找到。
一个使用 php 的 mail()
发送电子邮件的示例作业可能如下所示
namespace MyModule\Job; use SlmQueue\Job\AbstractJob; class EmailJob extends AbstractJob { public static function create(string $to, string $subject, string $message): self { // This will bypass the constructor, and thus load a job without // having to load the dependencies. $job = self::createEmptyJob([ 'subject' => $subject, 'to' => $to, 'message' => $message, ]); // Add some metadata, so we see what is going on. $job->setMetadata('to', $to); return $job; } private SomeMailService $mailService; public function __construct(SomeMailService $mailService) { $this->mailService = $mailService; } public function execute() { $payload = $this->getContent(); $to = $payload['to']; $subject = $payload['subject']; $message = $payload['message']; $this->mailService->send($to, $subject, $message); } }
如果您想将此作业注入队列,您可以在控制器中这样做,例如
namespace MyModule\Controller; use MyModule\Job\Email as EmailJob; use SlmQueue\Queue\QueueInterface; use Laminas\Mvc\Controller\AbstractActionController; class MyController extends AbstractActionController { protected $queue; public function __construct(QueueInterface $queue) { $this->queue = $queue; } public function fooAction() { // Do some work $this->queue->push( EmailJob::create('john@doe.com', 'Just hi', 'Hi, I want to say hi!'), ['delay' => 60] ); } }
现在上面的代码允许您将作业插入队列,但之后您需要启动一个工作进程来处理这些作业。
SlmQueue 集成了 laminas-cli
以用于命令行。您可以使用以下命令启动 "default" 队列的工作进程
$ vendor/bin/laminas slm-queue:start default
贡献
SlmQueue 由各种狂热的 Laminas 用户开发。代码编写得尽可能通用,适用于 Laminas 应用程序。如果您想为 SlmQueue 贡献,请在此存储库上创建一个分支并开始修改!
任何错误都可以通过 GitHub 上的 问题 报告。如果您想贡献,请注意以下指南
- 将项目分支到您自己的存储库
- 使用分支来处理您自己的部分
- 在SlmQueue官方仓库创建一个拉取请求
- 确保用适当的单元测试覆盖更改
- 如果您添加了新功能,请相应地制作一些文档
对于长期贡献者,将授予此仓库的推送访问权限。
该感谢谁?
Jurian Sluiman 和 Michaël Gallego 是创建此仓库的初始工作,并且长期维护它。
目前由以下人员维护: