dariob/cakephp-queue

CakePHP的队列插件提供了延迟任务执行的功能。

安装: 0

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 0

分支: 137

类型:cakephp-plugin

6.2.1 2021-11-12 16:33 UTC

README

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

此分支适用于 CakePHP 4.2+。有关详细信息,请参阅版本映射

背景

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

整体功能受到 Gearman、Beanstalk 或 dropr 等系统的启发,但没有任何与这些更高级系统竞争的错觉。

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

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

为什么使用延迟执行?

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

队列插件提供了一种简单的方法来创建和运行此类非用户交互关键任务。

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

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

演示

请参阅沙盒应用

安装和用法

请参阅文档