ga/resque

yii2-resque

dev-master 2017-02-16 01:53 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:52:50 UTC


README

#Yii2-resque(最佳,简单)##安装您需要使用composer主要,您需要在根包(项目目录)中添加以下代码,因为最新的php-resque是dev-master,标记版本是最旧的。

{
    "require":{
        ...
        "chrisboulton/php-resque": "@dev"
    }
}

然后运行

composer require ga/resque dev-master

##设置

###对于Yii2-basic

1. 将ResqueController.txt复制到命令目录,并将其重命名为ResqueController.php,然后修改命名空间为app\commands

2. 修改配置目录中的console.php,添加以下代码。

   'resque' => [
       'class' => 'ga\resque\GAResque',
       'server' => '127.0.0.1',     // Redis server address
       'port' => '6379',            // Redis server port
       'database' => 0,             // Redis database number
   ],

3. 在模型目录中创建*Job.php

示例

MyJob.php
<?php
namespace app\models;
class MyJob
{ 
    public function setUp()
    {
        // ... Set up environment for this job
    }    
    public function perform()
    {
        echo "1\n";
        $this->args['name'];
    }
    
    public function tearDown()
    {
        // ... Remove environment for this job
    }
}

《perform()`方法将处理工作,《setUp()`将在工作开始时运行,《tearDown()`将在工作完成后运行。**注意:**您必须使用\Yii::$app->resque->dequeue('default', 'app\models\MyJob', [1], true);进行入队,Yii2将根据命名空间通过autoloader查找文件。

对于Yii2-advanced

1. 将ResqueController.txt复制到控制台控制器目录,并重命名为ResqueController.php,然后修改命名空间为console\controllers

2. 修改配置目录中的console/main.php,添加以下代码。

   'resque' => [
       'class' => 'ga\resque\GAResque',
       'server' => '127.0.0.1',     // Redis server address
       'port' => '6379',            // Redis server port
       'database' => 0,             // Redis database number
   ],

3. 在模型目录(包括控制台,前端,后端,公共部分)中创建*Job.php

示例

MyJob.php
<?php
namespace backend\models;
namespace console\models;
namespace frontend\models;
namespace common\models;
class MyJob
{ 
    public function setUp()
    {
        // ... Set up environment for this job
    }    
    public function perform()
    {
        echo "1\n";
        $this->args['name'];
    }
    
    public function tearDown()
    {
        // ... Remove environment for this job
    }
}

《perform()`方法将处理工作,《setUp()`将在工作开始时运行,《tearDown()`将在工作完成后运行。

**注意:**您必须使用\Yii::$app->resque->dequeue('default', 'backend\models\MyJob', [1], true);进行入队,Yii2将根据命名空间通过autoloader查找文件。

用法

入队和出队作业任务。

   \Yii::$app->resque->enqueue('default', 'BadJob', [1], true);
   \Yii::$app->resque->dequeue('default', 'BadJob', [1], true);
   \Yii::$app->resque->size('default');
   ...

更多信息,您还可以查看php-resque

注意: dequeue()目前不可用,将来可以使用。

参数default是队列名称,BadJob是完成工作的类。参数[1]BadJob的数组参数。在项目目录的根目录下运行以下代码

nohup QUEUE=* ./yii resque &

注意:*表示将启动所有队列。您可以用队列名称替换*,或者像这样QUEUE=default1,default2将运行指定的队列。