一、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