maymeow/cakephp-queue

CakePHP 的 Queue 插件分支,提供延迟任务执行。

安装: 886

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 136

类型:cakephp-plugin

6.0.1 2021-07-12 09:02 UTC

README

CI Coverage Status Latest Stable Version Minimum PHP Version License Total Downloads Coding Standards

此分支适用于 CakePHP 4.1+。详情请参阅 版本映射

背景

这是一个非常简单且极简主义的 CakePHP 任务队列(或延迟任务)系统。如果您需要一个非常基础的 PHP 内部队列工具,这绝对是一个选择。它也是一个很好的工具,可以用于演示队列的工作原理,并且没有任何依赖。

整体功能灵感来源于 Gearman、Beanstalk 或 dropr 等系统,但没有任何意图与这些更高级的系统竞争。

该插件旨在提供一个基本、易于使用的方法来启用延迟任务执行,无需设置或运行额外的队列守护进程,同时很好地集成到 CakePHP 中,并简化工作脚本的创建。您还可以轻松地将进度和状态信息提供到您的页面中。

请阅读我关于 延迟执行实际应用示例 [新] 的博客文章。对于更多高容量和复杂用例,请参阅 优秀列表 中的替代方案。

为什么使用延迟执行?

在您的页面想要执行与渲染当前页面不直接相关的任务时,延迟执行是有意义的(尤其是在 PHP 中)。例如,在一个 BBS 类型的系统中,新用户的帖子可能需要创建多个个性化的电子邮件消息,通知其他用户新内容。创建和发送这些电子邮件与当前活跃用户完全无关,不应增加页面响应时间。另一个例子是按用户请求下载、提取和/或分析外部文件。解决这些问题的常规方法是创建专门的任务计划程序,这些计划程序使用特定的数据库状态来确定应该执行哪些操作。

Queue 插件提供了一个简单的方法来创建和运行这样的非用户交互关键任务。

另一个重要原因是,如果特定任务失败,可以(自动)重试。因此,如果邮件服务器第一次没有工作,或者 API 网关有问题,当前要执行的任务不会丢失,而是保留以重新运行。大多数那些外部服务应该被视为每 x 次调用中失败一次,因此队列实现可以帮助减少因此类失败而导致的问题。如果任务即使经过重试仍然无法完成,您仍然可以选择调试其有效负载以及为什么此任务无法完成。这里没有数据丢失。

虽然您可以运行多个工作进程,并且可以在一定程度上通过共享数据库将这些工作进程分散到不同的机器上,但对于高容量/高数量工作进程的系统,您应该考虑使用更高级的系统。

演示

请参阅 沙盒应用程序

安装和使用

请参阅 文档