设置queue为redis驱动
queue驱动主要有sync,redis,database,mq ,中小型系统建议使用redis, 复杂系统使用mq
初始默认为sync 这个分派任务的时候直接同步执行,修改为redis则使用redis 的list(尽快执行的队列)和zset(延时执行的队列)两种数据类型保存,也可以用数据库为驱动
QUEUE_CONNECTION=redis
并配置好你的redis,以下是我本机的配置
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_DATABASE=0
2、创建任务,例子创建一个 aSampleQueue
artisan make:job aSampleQueue
class aSampleQueue implements ShouldQueue
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $mesaage;
public function __construct($message)
$this->mesaage = $message;
//handle 方法是队列需要执行的业务,这里用一个写一条日志作为业务内容
public function handle()
\Log::info($this->mesaage); // }
4、分发内容给队列,本例子假定在路由上调用
Route::get('/test/queue/{name}', function ($name){
App\Jobs\aSampleQueue::dispatch("创建用户:{$name}".date('H:i:s'));//立即执行的队列
假定域名为la.com,在浏览器输入:http://la.com/test/queue/lucas ,到redis查看,如下图
也可以制定队列名onQueue('delayQueueSample')和指定执行时间addMinutes(30)
Route::get('/test/queue/{name}', function ($name){
App\Jobs\aSampleQueue::dispatch("创建用户:{$name}".date('H:i:s'))->onQueue('delayQueueSample')->delay(\Illuminate\Support\Carbon::now()->addMinutes(30));//延迟30分钟执行 });
在redis查到该队列,说明写入成功
4、用命令行执行队列
php artisan queue:work
ios排序算法 排序算法 简书
基于比较的排序(时间复杂度极限O(nlogn))选择排序简介:这是一种最简单直观的排序,是稳定的排序算法。原理:每一趟从待排序的数列中选出最小的(最大的)一个元素,顺序放到已经排好序的数列的最后,直到所有待排元素全部排好.时间复杂度:O(n^2)过程演示|1 3 5 7 9 2 4 6 8 0 选择第一小的数与0位交换
1 3 5 7 9 2 4 6 8 0
0| 3 5