美文网首页
laravel 队列任务

laravel 队列任务

作者: 咯噔爸比 | 来源:发表于2020-11-10 14:56 被阅读0次

1.生成job文件
php artisan make:job SendMessage
2.编辑文件

//接收参数
public function __construct($cid,$data)
{
    //$data['title']
    //$data['url']
    //$data['description']
    //$data['picurl']
    //$data['userid']
    $this->cid=$cid;
    $this->info=$data;
}

/**
 * Execute the job.  逻辑处理
 *
 * @return void
 */
public function handle()
{
    //查询是否绑定了企业微信
    $info=WeWorkAction::model()->getBindInfo($this->cid);
    if(empty($info)) return true;
    $obj = new WorkUser();
    $data = $this->info; //组合数据
    //获取url进行拼接处理
    if($info->type==1){
        $query = parse_url($data['url'], PHP_URL_QUERY);
        parse_str($query, $url_info);
        $url_info['login_cid'] = $info->comid;
        $buid_query=http_build_query($url_info);
        $data['url']=parse_url($data['url'], PHP_URL_SCHEME).'://'.parse_url($data['url'], PHP_URL_HOST).'?'.$buid_query;
    }
    //组装userid
    $arr=array_chunk($data['userid'],100);
    foreach ($arr as $val){
        //获取userid
        $userid = DB::table('user_info')->select('wx_id')->where(['comid' => 213])->whereIn('id', $val)->where('wx_id', '!=', ' ')->get()->toArray();
        if(empty($userid)) break;
        $users = array_column($userid,'wx_id');
        $data['userid'] = $users;
        $data['type'] = 'news'; //默认是新闻的形式
        $data['comid'] = $info->comid;
        $obj->sendWeworkMsg(formatToArray($info),$data);
    }
}
  1. 正常文件中调用队列
SendMessage::dispatch(1,['title'=>'松伟真帅','userid'=>[12052], 'description'=>'这是一条来自未来的消息',
      'url'=>'https://testent.toujianyun.com/detail/97','picurl'=>'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1194131577,2954769920&fm=26&gp=0.jpg'])
            ->onQueue('{sendWeWorkMsg}');

4.消耗队列
php artisan queue:work --queue={sendWeWorkMsg}

注意 centos 中将会把队列服务的job 信息等输出到 日志中 /var/log/messages 中 可以通过降低日志的级别避免写入

vi /etc/rsyslog.conf 
找到关于 messages的配置信息:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
将其改为 级别改变了除了系统的报错不会写入了就
*.notice;mail.none;authpriv.none;cron.none /var/log/messages  (不写日志)

相关文章

  • docker 内定时任务,守护进程采坑

    业务需要执行laravel的队列监听进程和任务队列,任务队列在docker中装 supervisor 然后每隔60...

  • laravel 队列任务

    1.生成job文件php artisan make:job SendMessage2.编辑文件 正常文件中调用队...

  • Laravel消息队列

    Laravel消息队列## 本文所讲的消息队列是基于Beanstalkd的,一些繁重的任务可以放到消息队列里,后台...

  • laravel 队列的使用

    laravel version: 5.4.* 为什么有使用队列? 使用队列可以将某些耗时任务(比如发送邮件)延迟执...

  • horizon - 队列监控

    Horizon 为 Laravel Redis 队列提供一个仪表板,用于查看和管理 Redis 队列任务执行的情况...

  • Laravel 队列queue(database篇)

    队列 Laravel队列服务为各种不同的后台队列提供统一的API允许推迟耗时任务(例如发送邮件)的执行,从而大幅提...

  • Lumen -- 队列

    一,构建 1. lumen利用Laravel的队列组件为各种不同的队列服务提供统一的API。队列允许将耗时任务(例...

  • laravel中使用 database为驱动的队列发送消息

    简介 laravel 的队列服务对各种不同的后台队列服务提供了统一的 API。队列允许你延迟执行消耗时间的任务,这...

  • Laravel5.8 队列的使用与监控

    队列 Laravel5 使用队列可以异步执行消耗时间的任务,降低请求的响应时间 安装队列驱动 根据你自己的需求安装...

  • laravel使用队列监控 Horizon

    继 laravel使用队列 ,本篇介绍更好的队列监控工具--Horizon Horizon 是 Laravel 生...

网友评论

      本文标题:laravel 队列任务

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