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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
php下载文件的代码示例
Jun 29 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
Sep 30 PHP
ini_set的用法介绍
Jan 07 PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 PHP
PHP中使用array函数新建一个数组
Nov 19 PHP
PHP环形链表实现方法示例
Sep 15 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
PHP分享图片的生成方法
Apr 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
如何使用PHP获取网络上文件
2006/10/09 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
js仿淘宝商品放大预览功能
2017/03/15 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
Python struct模块解析
2014/06/12 Python
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
施工人员岗位职责
2013/12/12 职场文书
学生周末长期请假条
2014/02/15 职场文书
高三学习决心书
2014/03/11 职场文书
爱祖国演讲稿
2014/05/04 职场文书
电教室标语
2014/06/20 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
《确定位置》教学反思
2016/02/18 职场文书
vue如何批量引入组件、注册和使用详解
2021/05/12 Vue.js