folded / queue
为您的Web应用程序进行队列作业管理。
Requires
- php: >=7.4.0
- doctrine/dbal: 2.*
- folded/file: 0.2.*
- webmozart/assert: 1.*
Requires (Dev)
- friendsofphp/php-cs-fixer: 2.*
- pestphp/pest: 0.3.*
- phpstan/phpstan: 0.12.*
- phpunit/phpunit: 9.*
This package is auto-updated.
Last update: 2024-09-17 16:40:18 UTC
README
为您的Web应用程序进行队列作业管理。
摘要
关于
我创建这个库是为了能够轻松创建作业,以便在以后的时间排队和检索。我使用它来完成不希望在我的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_FIFOQUEUE_TYPE_FILO
因此,前面的代码片段变为
use function Folded\setQueueType; use const Folded\QUEUE_TYPE_FIFO; setQueueType(QUEUE_TYPE_FIFO);