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 分页类 扩展代码
Jun 11 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
php下载文件超时时间的设置方法
Oct 06 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
php两点地理坐标距离的计算方法
Dec 29 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
十天学会php之第一天
2006/10/09 PHP
PHP里的中文变量说明
2011/07/23 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
跟老齐学Python之模块的加载
2014/10/24 Python
Python中property函数用法实例分析
2018/06/04 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
高中校园广播稿
2014/01/11 职场文书
学生会干部自荐信
2014/02/04 职场文书
《散步》教学反思
2014/03/02 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
python如何利用traceback获取详细的异常信息
2021/06/05 Python
python 对图片进行简单的处理
2021/06/23 Python