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下使用无限生命期Session的方法
Mar 16 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
PHP curl_setopt()函数实例代码与参数分析
Jun 02 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
实现获取http内容的php函数分享
Feb 16 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
php获取本周开始日期和结束日期的方法
Mar 09 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 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面向对象编程快速入门
2006/12/14 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Python中的取模运算方法
2018/11/10 Python
python中yield的用法详解
2021/01/13 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
廉政教育心得体会
2014/01/01 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技