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与XML的PDF文档生成技术
Oct 09 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
PHP 第二节 数据类型之数组
Apr 28 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
PHP命名空间(Namespace)简明教程
Jun 11 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
Yii2 批量插入、更新数据实例
Mar 15 PHP
php 开发中加密的几种方法总结
Mar 22 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 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
用header 发送cookie的php代码
2007/03/16 PHP
sae使用smarty模板的方法
2013/12/17 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
详解Python 函数如何重载?
2019/04/23 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
Python二元算术运算常用方法解析
2020/09/15 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
C/C++程序员常见面试题二
2015/11/19 面试题
安全教育心得体会
2013/12/29 职场文书
低碳环保标语
2014/06/12 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
80后婚前协议书范本
2014/10/24 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
cf战队宣传语
2015/07/13 职场文书
2015国庆节宣传语
2015/07/14 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL