与 gearmand 任务处理器的简单集成

安装次数: 13,241

依赖: 0

建议者: 0

安全性: 0

星标: 6

关注者: 2

分支: 4

开放问题: 4

类型:silverstripe-module

1.1.0 2015-05-01 06:41 UTC

This package is auto-updated.

Last update: 2024-08-29 04:13:06 UTC


README

添加对 gearmand php 任务队列的基本支持

安装

  • 安装 gearmand
  • 更改配置以使用持久队列;例如
  PARAMS="--listen=127.0.0.1 -q libsqlite3 --libsqlite3-db /var/run/gearmandb"
  • 这使用 publero/net_gearman 中的 Net_Gearman 库与 gearman 进行通信;composer 应该为您管理这一点

为了测试安装是否正确,您可以执行一个测试任务

  • 在 SS 根目录中打开两个终端窗口
  • 在第一个中,运行 php gearman/gearman_runner.php
  • 在第二个中,运行 php gearman/gearman_test_client.php
  • 您应该在第一个控制台窗口中看到一些输出信息,指示任务被选中并按预期处理。

使用方法

  • 定义一个实现 GearmanHandler 的类
  • 'getName' 方法应返回类中处理任务的方法名称(例如 exampleMethod)
  • 通过调用 php gearman/gearman_runner.php 启动一个工作进程
  • 通过调用 $this->gearmanService->exampleMethod(); 触发任务
  • 传递给 exampleMethod 的任何参数都将传递给工作进程
  • 注意:目前只支持 '后台' 任务,因此没有返回值

反射工作进程

'gearman_runner' 脚本绑定到 SilverStripe 的单个实例;这意味着任何针对 gearman 服务器的任务都是由该 SilverStripe 实例处理和执行的。在您有多个 SS 实例运行的情况下,您需要使用 reflected_runner.php 脚本而不是 gearman_runner.php。此处理程序将包括触发 gearman 任务执行的 SS 实例的路径,并在其中启动一个单独的进程执行该 gearman 任务。