bostjanob/queue-platform

PHP队列平台,用于简化队列任务的构建

dev-master 2017-02-08 13:04 UTC

This package is auto-updated.

Last update: 2024-09-16 23:41:04 UTC


README

Build Status

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