folded/queue

为您的Web应用程序进行队列作业管理。

v0.1.0 2020-10-11 17:32 UTC

This package is auto-updated.

Last update: 2024-09-17 16:40:18 UTC


README

为您的Web应用程序进行队列作业管理。

Build Status Maintainability TODOs

摘要

关于

我创建这个库是为了能够轻松创建作业,以便在以后的时间排队和检索。我使用它来完成不希望在我的PHP请求上阻塞的任务(例如,在创建账户后发送电子邮件,我可以稍后发送)。

Folded是一组用于帮助您轻松设置Web应用程序的包,使用即可使用的包。

  • folded/action:组织您的Web应用程序控制器的途径。
  • folded/config:您的PHP Web应用程序的配置实用工具。
  • folded/crypt:为您Web应用程序加密和解密字符串。
  • folded/exception:为您的Web应用程序抛出各种类型的异常。
  • folded/file:使用您的Web应用程序的函数操作文件。
  • folded/history:操作您的Web应用程序的浏览器历史记录。
  • folded/http:您的Web应用程序的HTTP实用工具。
  • folded/orm:为您的Web应用程序的ORM。
  • folded/routing:为您的PHP Web应用程序的路由函数。
  • folded/request:您的PHP Web应用程序的请求实用工具,包括请求验证器。
  • folded/session:您的Web应用程序的会话函数。
  • folded/view:您的PHP Web应用程序的视图实用工具。

功能

  • 可以向队列中添加作业
  • 可以从队列中检索作业
  • 可以检查队列中是否有待处理的作业
  • 可以设置队列驱动程序
    • 文件
  • 可以设置作业检索的类型
    • FIFO:先进先出
    • FILO:先进后出

要求

  • PHP版本 >= 7.4.0
  • 已安装Composer

安装

1. 安装包

在您的根目录中,运行此命令

composer required folded/queue

2. 添加引导代码

尽早,并确保代码在向队列中添加或获取作业之前运行

use function Folded\setQueueDriver;
use function Folded\setQueueType;

setQueueDriver("file", [
  "folder" =>
]);

setQueueType("fifo");

查看示例以获取驱动程序和队列类型的完整列表,以及避免手动编写队列驱动程序和类型的常量。

示例

1. 向队列中添加作业

在这个示例中,我们将向队列中添加一个作业。

use function Folded\addJobToQueue;

addJobToQueue("account-created", [
  "email" => "john@doe.com",
]);

如果您使用了“文件”驱动程序,您将看到包含您的作业的新default.job文件。

如果您想使用特定名称组织多个队列,请使用第三个参数。

use function Folded\addJobToQueue;

addJobToQueue("account-created", [
  "email" => "john@doe.com",
], "emails");

如果您使用“文件”驱动程序,您将看到一个名为您队列名称的新emails.job文件,其中包含您的作业。

2. 从队列中获取作业

在这个示例中,我们将获取队列中的第一个作业。

use function Folded\getJobFromQueue;

$job = getJobFromQueue();

echo "job type is {$job->getType()}";

var_dump($job->getPayload());

如您所见,当获取作业队列时,您将获得一个Folded\QueueJob的实例。

默认情况下,您从“默认”队列检索作业。如果您使用“文件”驱动程序,作业来自“default.job”队列文件。

当作业被取出时,它将从队列中删除

如果您需要从命名队列中获取作业,请使用第一个参数。

use function Folded\getJobFromQueue;

$job = getJobFromQueue("emails");

echo "job type is {$job->getType()}";

var_dump($job->getPayload());

例如,如果您使用“文件”驱动程序,这将从“emails.job”队列文件中获取作业。

3. 检查队列中是否有待处理的作业

在这个示例中,我们将检查队列中是否有待处理的作业。

use function Folded\hasJobFromQueue;

if (hasJobFromQueue()) {
  // can get the job queue
}

默认情况下,此方法将检查默认队列中是否有可用的作业。如果您需要检查命名队列,请使用第一个参数。

use function Folded\hasJobFromQueue;

if (hasJobFromQueue("emails")) {
  // can get the job queue
}

4. 设置队列驱动程序

在这个示例中,我们将设置队列驱动程序。

use function Folded\setQueueDriver;

setQueueDriver("file");

以下是支持的队列驱动程序列表

  • 文件

如果您不想手动编写队列驱动程序,您可以使用常量代替。

use function Folded\setQueueDriver;
use const QUEUE_DRIVER_FILE;

setQueueDriver(QUEUE_DRIVER_FILE);

以下是可用的常量列表

  • QUEUE_DRIVER_FILE

5. 设置队列类型

在这个示例中,我们将设置作业检索的类型。

use function Folded\setQueueType;

setQueueType("fifo");

以下是支持的队列类型列表

  • fifo:先进先出
  • filo:先进后出

如果您不想手动编写队列类型,您可以使用常量代替。

  • QUEUE_TYPE_FIFO
  • QUEUE_TYPE_FILO

因此,前面的代码片段变为

use function Folded\setQueueType;
use const Folded\QUEUE_TYPE_FIFO;

setQueueType(QUEUE_TYPE_FIFO);

版本支持