laravel 队列教程

 

一、mysql处理队列

作用:处理长时间才能处理完的逻辑代码,交给队列。

缺点:mysql占用内存比较大,内存消耗比较大

配置config/queue

//'default' => env('QUEUE_CONNECTION', 'sync'),
'default' => database,//选择数据库缓存处理

第一步:生成表 

在服务器执行命令生成表

php artisan queue:table
php artisan migrate

生成数据库jobs的表

第二步:生成任务

在本地执行命令

php artisan make:job Test

在app/Jobs/ 文件夹下生成了Test的队列任务

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use App\Model\User;

class Test implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    protected $data;

    public function __construct($data)
    {
        //接收来自触发的控制器传来的参数
        $this->data = $data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        for ($i=0; $i < $this->data; $i++) { 
            file_put_contents('/www/wwwroot/jiali/storage/logs/test.log', date("Y-m-d H:i:s") . " " .'测试' . "\r\n", FILE_APPEND | LOCK_EX);
        }
       
    }
}

第三步:队列调用

在控制器中调用

<?php

namespace App\Http\Controllers\api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Jobs\Test; //引用队列类
class TestController extends Controller
{

    public function show(){
        $data=10;
        Test::dispatch($data);
    }
}

第四步:开启队列

php artisan queue:work

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值