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 相关文章推荐
BBS(php & mysql)完整版(一)
Oct 09 PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
CodeIgniter常用知识点小结
May 26 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 PHP
PHP实现的同步推荐操作API接口案例分析
Nov 30 PHP
PHP使用Nginx实现反向代理
Sep 20 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 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 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
javascript制作sql转换为stringBuffer的小工具
2015/04/03 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
微信小程序实现页面浮动导航
2019/01/28 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
Python实现的几个常用排序算法实例
2014/06/16 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
python批量修改图片后缀的方法(png到jpg)
2018/10/25 Python
python实现转圈打印矩阵
2019/03/02 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
django ORM之values和annotate使用详解
2020/05/19 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
社区党员志愿服务活动方案
2014/08/18 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
2015年企业新年寄语
2014/12/08 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
培训计划通知
2015/07/15 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电
使用Ajax实现进度条的绘制
2022/04/07 Javascript