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 syntax error, unexpected $end 错误的一种原因及解决
Oct 25 PHP
8个出色的WordPress SEO插件收集
Feb 26 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
一个简洁实用的PHP缓存类完整实例
Jul 26 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
Apr 06 PHP
PHP tp5中使用原生sql查询代码实例
Oct 28 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 大数据量及海量数据处理算法总结
2011/05/07 PHP
smarty中常用方法实例总结
2015/08/07 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
jQuery 1.0.2
2006/10/11 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
layui实现数据分页功能
2019/07/27 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
python字符串循环左移
2019/03/08 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
年终自我鉴定
2013/10/09 职场文书
初中美术教学反思
2014/01/29 职场文书
高中军训感言600字
2014/03/11 职场文书
党员一帮一活动总结
2014/07/08 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
食品仓管员岗位职责
2015/04/01 职场文书