think-queue

作者: 坐着玩手机 | 来源:发表于2019-12-22 14:34 被阅读0次

安装

composer require topthink/think-queue

应用

新建文件app\common\jobs\SendEmailJob.php

<?php
namespace app\common\jobs;
use think\facade\Log;
use think\queue\Job;
class SendEmailJob
{
    public function fire(Job $job, $data)
    {
        if (!$this->checkJob($data)){
            $job->delete();
            return;
        }
        if ($this->doJob($data)){
            $job->delete();
            Log::log("dismiss job has been down and deleted");
        }else{
            //检查任务重试次数
            if($job->attempts() > 3){
                Log::log("dismiss job has been retried more that 3 times");
                $job->delete();
            }
        }
    }

    private function checkJob($data)
    {
        return true;
    }
    private function doJob($data)
    {
        // 发送邮箱
        return Email::send($data['to'], $data['title'], $data['content']);
    }
}

新建控制器文件 app\index\controller\Index.php

<?php
namespace app\index\controller;
use think\facade\Queue;
class Index
{
    public function sendEmail()
    {
        $i = 0;
        $res = [];
        while ($i < 10){
            $res[$i] = Queue::push(\app\common\jobs\SendEmailJob::class, [
                'to' => '1046512080@qq.com',
                'title' => '厉害了',
                'content' => 'ddddd'
            ], 'send_email');
            $i++;
        }
        return json($res);
    }
}

supervisor进程守护(deepin)

touch /etc/supervisor/conf.d/queue.conf
vim queue.conf
[program:queue]
; 执行命令目录
directory=/www/wwwroot/tp6.okcoder.com/
; 执行命令
command=php think queue:work --queue send_email,send_message
; 执行命令用户
user=root
autostart=true
; 程序意外退出自动重启
autorestart=true

相关文章

网友评论

    本文标题:think-queue

    本文链接:https://www.haomeiwen.com/subject/qveonctx.html