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 相关文章推荐
我常用的几个类
Oct 09 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
May 02 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
Jun 18 PHP
php实现httpclient类示例
Apr 08 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
利用谷歌 Translate API制作自己的翻译脚本
Jun 04 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
php日期操作技巧小结
Jun 25 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 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&&mysql)五
2006/10/09 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
python的绘图工具matplotlib使用实例
2014/07/03 Python
python基于右递归解决八皇后问题的方法
2015/05/25 Python
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python判断两个对象相等的原理
2017/12/12 Python
对python sklearn one-hot编码详解
2018/07/10 Python
python 自动去除空行的实例
2018/07/24 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
linux 下selenium chrome使用详解
2020/04/02 Python
什么是python类属性
2020/06/10 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
自我评价优秀范文分享
2013/11/30 职场文书
微观物理专业自荐信
2014/01/26 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
小学毕业寄语大全
2014/04/03 职场文书
贷款委托书怎么写
2014/08/02 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
高中生旷课检讨书
2014/10/08 职场文书
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS