PHP框架Laravel中实现supervisor执行异步进程的方法


Posted in PHP onJune 07, 2017

问题描述

大家在使用Laravel框架实现动态网页时,若有些操作计算量较大,为了不影响用户体验,往往需要使用异步方式去处理。这里使用supervisor和laravel自带的queues实现。下面来看看详细的介绍:

Supervisor

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

方法如下

1. 安装supervisor

apt-get install supervisor

安装完后重启supervisor:service supervisor restart

2. 配置supervisor文件

[program:laravel]
process_name=%(program_name)s_%(process_num)02d
command=php {{ app.root }}/artisan queue:listen
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile={{ app.root }}/storage/logs/queque.log

这里配置了supervisor管理的进程指令,用于启动laravel队列的监听。同时指定了进程数和错误日志地址。

3. queue配置

编写队列代码之前,需要配置queue,其配置位置在config/queue.PHP中,在这里你需要配置你的队列驱动器,例如数据库、Redis、同步等。不同的选择都有相应的配置。我这里选择redis进行配置。

例如:

'redis' => [
  'driver' => 'redis',
  'connection' => env('QUEUE_CONNECTION', 'default'),
  'queue' => 'wordtohtml',
  'expire' => 600,
 ],

4. 编写异步程序

异步成程序在app/job目录下编写,新建一个自己的类,例如:Shutdown,编写类的构造函数和handle函数。handle函数中是程序计算过程。

5. 执行异步函数

$this->dispatch(new Shutdown($vimd));

使用这一条指令就可以创建一个异步程序。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php中去除所有js,html,css代码
Oct 12 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
php使用百度天气接口示例
Apr 22 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
Aug 11 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
PHP实现对图片的反色处理功能【测试可用】
Feb 01 PHP
PHP获取访问设备信息的方法示例
Feb 20 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 #PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 #PHP
PHP laravel中的多对多关系实例详解
Jun 07 #PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 #PHP
PHP框架laravel的.env文件配置教程
Jun 07 #PHP
理清PHP在Linxu下执行时的文件权限方法
Jun 07 #PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 #PHP
You might like
PHP 导出Excel示例分享
2014/08/18 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
js 加载并解析XML字符串的代码
2009/12/13 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
js new Date()实例测试
2019/10/31 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
python+Django+apache的配置方法详解
2016/06/01 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
基本款天堂:Everlane
2017/05/13 全球购物
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
Servlet面试题库
2015/07/18 面试题
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
化工专业求职信
2014/07/01 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
放牛班的春天观后感
2015/06/01 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python