Laravel队列处理


laravel 的队列服务对各种不同的后台队列服务提供了统一的 API。队列允许你延迟执行消耗时间的任务,比如发送一封邮件。这样可以有效的降低请求响应的时间。


队列的配置文件被存储在 config/queue.php 中。在这个文件中你会发现框架所支持的队列驱动的配置连接示例。这些驱动包括:数据库,Beanstalkd,Amazon SQS,Redis,和一个同步(本地使用)的驱动。

还有一个名为 null 的驱动表明不使用队列任务


  • 修改.env
CACHE_DRIVER=file 
// 这个值设为redis,且redis服务未启动,在执行php artisan queue:work会出现连接redis失败的错误,因此当QUEUE_DRIVER不为redis时,CACHE_DRIVER也不能为redis。
QUEUE_DRIVER=database
  •  创建job表
 php artisan queue:table
 php artisan migrate
  • 定义任务调度cron命令
    Laravel队列处理_第1张图片
  • 生成job文件(app/Jobs下面)
php artisan make:job SendCampaginEmail

定时执行推送给job队列文件SendCampaginEmail处理

Laravel队列处理_第2张图片


SendCampaginEmail文件

Laravel队列处理_第3张图片

。。。。。。
推给队列文件方法

$job = (new SendCampaignEmail($campaigninfo))->delay(1);
dispatch($job);

执行队列文件
Laravel队列处理_第4张图片

php artisan queue:work
或是
php artisan queue:listen

两者区别查看文档吧

具体任务失败或是处理方法守护进程看文档:

http://laravelacademy.org/post/6125.html

死亡,美妙的长眠,值得高歌一曲,啦~~~

你可能感兴趣的:(Laravel)