apache2.4打开laravel项目_Laravel异步队列全攻略
最近项目需求,研究了laravel的异步队列。官方文档虽然很是详细,但也有些晦涩难懂,在此记录下步骤,供大家参考。
1、修改/config/queue.php文件
<?phpreturn [/*|--------------------------------------------------------------------------| Default Queue Connection Name|--------------------------------------------------------------------------|| Laravel's queue API supports an assortment of back-ends via a single| API, giving you convenient access to each back-end using the same| syntax for every one. Here you may define a default connection.|*/'default' => env('QUEUE_CONNECTION', 'sync'),/*|--------------------------------------------------------------------------| Queue Connections|--------------------------------------------------------------------------|| Here you may configure the connection information for each server that| is used by your application. A default configuration has been added| for each back-end shipped with Laravel. You are free to add more.|| Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"|*/'connections' => ['sync' => ['driver' => 'sync',],'database' => ['driver' => 'database','table' => 'jobs','queue' => 'default','retry_after' => 90,],'beanstalkd' => ['driver' => 'beanstalkd','host' => 'localhost','queue' => 'default','retry_after' => 90,'block_for' => 0,],'sqs' => ['driver' => 'sqs','key' => env('AWS_ACCESS_KEY_ID'),'secret' => env('AWS_SECRET_ACCESS_KEY'),'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),'queue' => env('SQS_QUEUE', 'your-queue-name'),'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),],'redis' => ['driver' => 'redis','connection' => 'default','queue' => env('REDIS_QUEUE', 'default'),'retry_after' => 90,'block_for' => null,],],/*|--------------------------------------------------------------------------| Failed Queue Jobs|--------------------------------------------------------------------------|| These options configure the behavior of failed queue job logging so you| can control which database and table are used to store the jobs that| have failed. You may change them to any database / table you wish.|*/'failed' => ['database' => env('DB_CONNECTION', 'mysql'),'table' => 'failed_jobs',],];
注意:修改.env文件如下参数,设置队列连接默认为数据库连接
QUEUE_CONNECTION=database
2、新建/app/Job/EmailJob.php,此文件为队列主文件
<?php
namespace AppJob;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;
use IlluminateSupportFacadesLog;
use AppServiceEmailService;
class EmailJob implements ShouldQueue
{use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;private $content,$to;public function __construct($content,$to){$this->content=$content;$this->to=$to;}public function handle(){$res=false;$times=0;while($res!==true && $times<3){try{$times++;$res=EmailService::send($this->content,$this->to);}catch (Exception $e){Log::error(date('Y-m-d h:i:s',time()).' send email error:'.$e->getMessage());}}if($res===true){Log::info(date('Y-m-d h:i:s',time()).' send email success:');}}
}
3、新建/app/Service/EmailJobService.php服务,此文件为封装服务文件,可以不用,直接在使用的地方调用队列。
<?php
namespace AppService;
use AppJobEmailJob;
class EmailJobService
{public static function add($content,$to){$job=new EmailJob($content,$to);dispatch($job);}
}
4、打开终端切换目录进入Laravel项目根目录,执行如下命令,创建队列任务需要的数据表。
php artisan queue:tablephp artisan queue:failed-tablephp artisan migrate
5、通过下面这条指令启动队列监听服务,它会自动处理 jobs 表中的队列任务。
php artisan queue:listen
监听指定队列:
php artisan queue:work --queue=default,mytask --tries=2
这是监听 default和mytask两个队列,区分先后顺序。
6、如果需要在linux中后台运行,有两种方法:
6.1 执行如下命令:
nohup php artisan queue:listen > /tmp/artisan.log 2>&1 &
6.2.1 安装Supervisor,我的服务器系统为CentOs7.5,所以使用yum安装。
yum install supervisor
6.2.2 在/etc/supervisord.d下新建ini文件,eg:laraver-worker.ini,设置自动运行命令等相关参数
[program:laravel-worker]process_name=%(program_name)s_%(process_num)02dcommand=php 这里需要写项目目录/artisan queue:work --sleep=3 --tries=3autostart=trueautorestart=trueuser=rootnumprocs=8stdout_logfile=/root/queue/daily_english_queue.log
6.2.3 启动supervisor,laravel队列监听进程便在后台运行了。
supervisord -c /etc/supervisord.conf
7、注意:如果修改了job内的代码(包括job调用的方法类),是需要重启queue的。
php artisan queue:restart
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要
PHP进阶架构师>>>视频、面试文档免费获取shimo.im
或 者关注咱们下面的知乎专栏
PHP架构师圈子zhuanlan.zhihu.com
apache2.4打开laravel项目_Laravel异步队列全攻略相关推荐
- 苹果系统方舟怎么开服务器,方舟生存进化手游苹果版上帝模式怎么打开 | 手游网游页游攻略大全...
发布时间:2016-08-22 新出了大逃杀模式,玩家要在这个弱肉强食的世界争分夺秒的获取资源与生存,小编这里为大家带来了"峻晨热游"分享的大逃杀模式试玩视频,一起来看吧. 更 . ...
- 【信息系统项目管理师】论多项目的资源管理(论文攻略篇)
[信息系统项目管理师]论多项目的资源管理(论文攻略篇) 论多项目的资源管理(论文攻略篇) [信息系统项目管理师]论多项目的资源管理(论文攻略篇) 历年论文考试论题分析 分论题概述 心得 不足之处 1. ...
- 本地服务器打开laravel项目报错的解决方法
部分初学者安装完laravel项目,在本地服务器想打开项目首页时会发现这样的问题: Warning:require(C:\phpStudy\PHPTutorial\WWW\test\BSbacksta ...
- springboot+vue项目之MOBA类游戏攻略分享平台(java项目源码+文档)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农.今天要和大家聊的是一款基于springboot的MOBA类游戏攻略分享平台.项目源码以及部署相关请联系风歌,文末附上联系信息 .
- 嵌入式小白到大神学习全攻略(学习路线+课程+学习书籍+练习项目)
文章较长,希望耐心阅读,读完相信会对你的学习一定有帮助~ 嵌入式工程师需要掌握的内容非常广泛,嵌入式可以说是当下最有前途的IT应用领域,小到电子词典.手机,大到航空航天设备都是典型的嵌入式系统,因此, ...
- python飞机大战程序导入_Python飞机大战项目的准备 导入Pygame最全攻略~
1.导入pygame 首先是导入pygame模块,下面介绍的是pycharm中导入 先建立一个项目 左上角File->Setting->project:飞机大战项目(你自己的文件名字)-& ...
- 闲鱼卖货项目教程,新手小白3天上手最全攻略!
废话不说,直接上干货,今日的内容是闲鱼的进阶版本,至于闲鱼根底的知识,请参阅往期的干货,其实玩转闲鱼的核心有2个,一是选品,二是搞定流量:因此今日的内容就围绕这2个核心为你解说! 一.怎样选品 一.选 ...
- kong组件_使用Kongzue全家桶组件创建项目全攻略(一、引入和沉浸式的那些事儿)...
[更新于 2018.12.18] 前言 本文主要介绍如何使用在Github开源的Kongzue全家桶组件快速创建新项目,以及处理响应式.权限等操作的方法. 本文中演示的步骤成品将会在最终开源至Gith ...
- word文档可以打开但显示乱码的完全解决攻略
一.文档格式法解决word文档乱码故障 这种方法是将损坏的Word文档转换为另一种格式,然后再将其转换回Word文档格式.注:这是最简单和最彻底的文档恢复方法. 1.在Word中打开损坏的文档后,选择 ...
最新文章
- 内核中的HZ 及延迟等
- java读取csv文件
- 主页面功能的java_6-04-项目实战-主页面显示当前用户退出功能实现
- 实现较低的计时器粒度以重传TCP(RTO):时间轮算法如何减少开销
- java多线程(二)——锁机制synchronized(同步方法)
- STS下载教程(include官网无法下载解决方案)
- 西北农林科技大学CSDN高校俱乐部运营策划书
- cgi-bin是什么
- 如何观察一棵树 - 笔记
- uploader什么意思_webuploader
- PHPEMS +XAMPP 验证码显示不出来解决方法
- 美国国土安全部2.5万雇员隐私信息遭黑客窃取
- [ext4]空间管理 - 分配机制
- iOS 自动订阅开发
- matlab电机算法仿真,MATLAB电机仿真精华50例源代码
- Flutter 画面渲染的全面解析
- mysql修改初始化得到的密码
- 关于Direct3D11中字体的思考
- 利用Windows Azure Queue Storage给AutoCAD传递对象
- 等不及了,连成人都想抢看的动画片