笔记 · · 970 阅读

laravel 队列queue 学习

queue

使用场景:做用户中心需要和java对接订单数据,收到订单数据之后要做很多业务逻辑处理,包括请求高德接口获取省市区县的数据,期间会消耗很多时间去处理,所以为了避免这种情况,我想到了之前利用tp5试验过的消息队列的方式,于是有了这篇文章。

1.laravel .env文件配置


QUEUE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
2.生成


php artisan make:job SendReminderEmail

3.处理


public function handle()
{
    $redis = app('redis.connection');
    $redis->select(4);
    $i = 1; while ($value = $redis->lpop('fooList')){
        $data['uid'] = 1;
        $data['value'] = $value;
        $data['time'] = time();
        DB::connection('mysql_api')->table('test_redis')->insert($data); 
        if($i > 20){  echo 'end '.date('Y-m-d H:i:s').PHP_EOL; break; }
        $i++;
    }
}
4.模拟数据
$redis = app('redis.connection');
$redis->select(4); for ($i=0;$i<60;$i++){
    $redis->lpush('fooList', 'bar'.$i);
}
5.开启服务
php artisan queue:listen
6.OK