bostjanob / queue-platform
PHP队列平台,用于简化队列任务的构建
Requires
- php: ^7.1
- ext-json: *
Requires (Dev)
- mockery/mockery: ^0.9.7
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2024-09-16 23:41:04 UTC
README
PHP队列平台提供了一种简单的方法来构建PHP中的队列系统。
简单方式
使用队列平台的最简单方法是通过QueuePlatformExample存储库。
QueuePlatformExample提供了一个完整的示例,包含示例工作者。为了运行和测试它,它包含配置好的vagrant设置。要使用它,只需使用vagrant up
启动vagrant。
Vagrant设置将设置一个完整的环境。它将启动5个工作进程,设置队列管理器URL和服务器测试GUI。
测试GUI的URL: http://192.168.29.6/index.html
如何修改它,请参阅QueuePlatformExample存储库中的文档。
困难方式
1. 需求包
使用composer要求QueuePlatform包: composer require bostjanob/queue-platform
。
2. 创建工作者
工作者必须扩展BostjanOb\QueuePlatform\Worker
接口。
唯一需要实现的方法是run($params = null)
。
3. 创建QueueManager类并注册工作者
创建一个新的BostjanOb\QueuePlatform\QueueManager
对象,并使用它注册您的工作者。
对于构造函数,您必须提供存储对象(实现\BostjanOb\QueuePlatform\Storage\Storage
的对象)
<?php // queuemanager.php $storage = new \BostjanOb\QueuePlatform\Storage\SqlLiteStorage('db.sqlite3'); $qm = new \BostjanOb\QueuePlatform\QueueManager($storage); $qm->registerWorker('task-name', new Worker());
4. 使队列管理器JSON-RPC公开
为了推送任务、获取任务状态以及与工作进程进行通信,QueueManager使用JSON-RPC。因此,它必须可以通过Web服务器(通过URL)访问。
要监听json-rpc请求,请在QueueManager上运行listen()
。
<?php // queue.php - server over web server require 'queuemanager.php'; echo $qm->listen();
5. 启动工作进程
为了启动长时间运行的工作进程,请在QueueManager上调用work()
。从CLI运行它,并传递步骤4中QueueManager的URL作为参数。
<?php // process.php require 'queuemanager.php'; $qm->work();
从CLI运行
php process.php http://example.com/queue.php
QueueManager JSON-RPC服务器
QueueManager JSON-RPC提供了两种交互方法。
- queueTask
将任务排队,稍后由处理器提取。它接受一个或两个参数。
第一个参数是队列管理器注册的工作者的名称
第二个参数是工作者的参数。它接受单个值。如果您想传递多个值,请使用数组。
返回结果是作为JSON-RPC结果的任务对象
- getTask
getTask方法返回任务对象。此方法需要一个任务ID作为第一个参数。
QueueManager CLI工作进程
要运行长时间运行的过程,请从CLI(步骤5)运行PHP脚本。
启动进程的命令
php file.php [OPTIONS] URL_TO_QUEUEMANAGER
选项
可用选项
- workers - 要与之一起工作的工作者列表。默认为在QueueManage中注册的所有工作者。(以逗号分隔)
- sleep - 如果没有任务,等待多少秒。进程将检查是否有任务,如果没有任务,它将在再次检查之前等待。
带有选项的示例
php file.php --workers=foo,bar --sleep=3 http://example.com/queue.php