koenbetsens/jobserver

Gearman Jobserver集成

dev-master 2015-02-14 16:37 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:55:34 UTC


README

Laravel的Gearman JobServer实现

Gearman

Gearman是一个具有前台和后台功能的MQ(消息队列)提供商。这使得它成为少数几个适合PHP的同步MQ处理器之一。

gearman.org

Laravel

Laravel是当前最简洁、最强大的PHP框架之一,非常适合REST API项目。

laravel.com

Jobserver包是Laravel的Gearman调度实现。该包作为抽象层,可以将前台和后台作业发送到MQ服务器(在本例中为Gearman)。Jobserver包针对3层结构(app <-> api <-> worker)进行优化。

有关安装和使用jobserver包的更多信息,请在此处查看

3层 - JobServer包

3层 - 设置消息队列

实现

将包添加到您的API依赖项中。要使用本地“同步”模式(跳过本地Gearman安装),请将models/Ghostjob.php文件添加到您的worker应用/models目录。为了使API和worker作业功能之间的同步连接正常工作,请将"echo Ghostjob::evaluate ('controllerDispatch', $argv);"添加到所需函数文件的末尾。

安装

将Jobserver包添加到您的API项目的composer要求中。在project/composer.json中,添加koenbetsens\jobserver\JobServerServiceProvider条目

array ( 'Illuminate\Foundation\Providers\ArtisanServiceProvider', ... 'Illuminate\Workbench\WorkbenchServiceProvider', 'koenbetsens\jobserver\JobServerServiceProvider' ) 该包具有两种模式:“Gearman模式”(默认)和“同步模式”,以便在不安装实际MQ的情况下实现功能通信。#### Gearman模式 如果您的Gearman服务器与API项目位于同一台机器上,Jobserver将直接工作。要将作业发送到外部队列,请创建一个名为`app/config/gearman.php`的配置文件来存储Gearman服务器的位置。您可以通过创建[配置环境文件夹](https://laravel.net.cn/docs/4.2/configuration#environment-configuration)来添加多个服务器,或者为多个环境添加单个服务器。#### 同步(本地)模式 为了避免在开发过程中本地安装Gearman的麻烦,您可以为基于php-cli的作业加载执行启用**同步模式**。此模式仅在调试模式下工作,以防止在生产环境级别环境中启用同步模式。##### 配置 配置可以直接添加到您的`app/config/local/app.php`文件中。您的worker路径指向**作业函数目录**(通常命名为`/jobs`)true, /** |-------------------------------------------------------------------------- | Synchronized |-------------------------------------------------------------------------- | 如果设置,API将直接调用worker,而不是使用jobserver。 **/ 'synchronized' => true, /** |-------------------------------------------------------------------------- | Worker path |-------------------------------------------------------------------------- | 此路径由本地Jobserver用于同步队列请求。 **/ 'worker' => array ( 'path' => '/path/to/project/worker/jobs' ) ); ##### Ghostjob模型 我们需要模拟一个用于同步使用的作业模型。将Jobserver包中的`/models/Ghostjob.php`文件复制到您的worker项目中的`app/models`文件夹。现在,您可以在作业函数文件中选择性地添加以下Ghostjob评估: