yii2 beanstalk異步隊列使用教程

安裝

linux安裝(window用戶我暫時沒有更好的方案,請安裝虛擬機(jī),我使用的是vagrant)

yum install beanstalk

yii2項目安裝

composer require udokmeci/yii2-beanstalk "dev-master"

安裝管理 Beanstalk 隊列的 Web 系統(tǒng),此項目是一個單獨的系統(tǒng),可以查看和管理隊列任務(wù)

composer create-project ptrofimov/beanstalk_console -s dev beanstalk_console

如何使用

首先,服務(wù)端開啟

beanstalkd -l 127.0.0.1 -p 11300

yii2 console 模塊中配置
main.php

'components' => [
    // ...
    'beanstalk' => [
        'class' => 'udokmeci\yii2beanstalk\Beanstalk',
        'host' => 127.0.0.1, // default host
        'port' => 11300,
        'connectTimeout' => 1,
        'sleep' => false, // or int for usleep after every job
    ],
    // ...
],
'controllerMap' => [
    'worker'=>[
        'class' => 'app\commands\WorkerController',
    ]
],

執(zhí)行隊列在 console\controllers\WorkerController 里面:

<?php
namespace app\commands;

use common\helpers\ObjectHelper;
use common\models\MongoTrack;
use common\services\TrackService;
use Pheanstalk\Job;
use udokmeci\yii2beanstalk\BeanstalkController;
use Yii;

class WorkerController extends BeanstalkController
{
    /**
     * @var integer 優(yōu)先級 值越小優(yōu)先級越高,默認(rèn)為1024
     */
    const DELAY_PRIORITY = 1000;

    /**
     * @var integer 延遲執(zhí)行的秒數(shù)
     */
    const DELAY_TIME = 5;

    /**
     * @var  integer 當(dāng) delay_max 達(dá)到 刪除或延遲
     */
    const DELAY_MAX = 3;

    public function listenTubes()
    {
        return ['tube', 'track'];
    }


    /**
     * 采集數(shù)據(jù)
     * @param $job Job
     * @return string
     */
    public function actionTrack($job)
    {
        /** @var object $sentData */
        $sentData = $job->getData();
        if (TrackService::isNeedTrack($sentData->unique_id, $sentData->source, $sentData->method)) {
            $model = new MongoTrack();
            $model->load(ObjectHelper::toArray($sentData), '');
            fwrite(STDOUT, json_encode($model->errors));
            if ($model->save()) {
                return self::DELETE;
            }
            fwrite(STDOUT, json_encode($model->errors));
            return self::BURY;
        }
        // 不需要保存 mongodb 刪除
        return self::DELETE;
    }

    // ...
}

然后執(zhí)行php yii worker

安裝管理 Beanstalk 隊列的 Web 系統(tǒng),此項目是一個單獨的系統(tǒng),可以查看和管理隊列任務(wù)

composer create-project ptrofimov/beanstalk_console -s dev beanstalk_console

安裝完成后將域名指向beanstalk_console/public目錄下,可查看哥哥tube隊列狀態(tài)

Paste_Image.png

問題:linux 啟動進(jìn)程yii worker 進(jìn)程后,關(guān)閉xshell,如何保證進(jìn)程不關(guān)閉?有待探索

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Sites 網(wǎng)站 yiifeed:Yii 最新動態(tài)都在這里 yiigist:Yii 專用的 Packages my...
    guanguans閱讀 2,692評論 0 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • Composer Repositories Composer源 Firegento - Magento模塊Comp...
    零一間閱讀 4,021評論 1 66
  • 寶媽寶爸們,大家好!今天和大家一起走進(jìn)《小熊寶寶繪本》(共15冊): 內(nèi)容簡介: 《小熊寶寶》這套繪本專為家里蹣跚...
    樂育匯閱讀 2,560評論 0 0

友情鏈接更多精彩內(nèi)容