silverstripe-australia / gearman
与 gearmand 任务处理器的简单集成
1.1.0
2015-05-01 06:41 UTC
Requires
- publero/net_gearman: 1.0.*@dev
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 任务。